13.5.3 PreparedStatement接口
你开发出的应用程序必须能根据用户指定的搜索条件查询数据库。例如:用户提供了publisher ID(出版商编号),并想查看出版商的情况。
要实现这一点,需要准备查询语句,在执行时刻接收where子句里适当的值。
PreparedStatement对象可以代表一个预编译的SQL语句,它是Statement接口的子接口。由于PreparedStatement接口会将传入的SQL命令编译并暂存在内存中,所以用某一SQL命令在程序中被多次执行时,使用PreparedStatement对象的执行速度要快于使用Statement对象的执行速度。因此,将需要多次执行的SQL语句创建为PreparedStatement对象,可以提高效率。
PreparedStatement对象继承Statement对象的所有功能,另外还添加了一些特定的方法。
PreparedStatement接口提供的常用方法如下:
使用SQL指令SELECT对数据库进行记录查询操作,并返回Result对象。
ExecuteUpdate()
使用SQL指令INSERT、DELETE、UPDATE对数据库进行添加、插入和修改记录(Record)操作。
给指定位置的参数设定日期型值。
给指定位置的参数设定时间型数值。
给指定位置的参数设定double型值。
给指定位置的参数设定float型值。
给指定位置的参数设定int型值。
给指定位置的参数设定null型值。
上述各方法在操作失败时都会抛出SQLException异常。
PreparedStatement对象允许执行参数化查询。用Connection对象的prepareStatement()方法创建PreparedStatement对象。例如:
Connection对象的prepareStatement()方法将SQL语句作为其参数。SQL语句中可以包含运行时可被INPUT参数替代的占位符。‘?’符号就是一个运行时可被INPUT参数替代的占位符。在执行PreparedStatement对象之前,必须先设置每个‘?’参数的值。这可以通过调用相应的setXXX()方法来完成,XXX是参数的数据类型,例如: