13.5.3 PreparedStatement接口

13.5.3 PreparedStatement接口

你开发出的应用程序必须能根据用户指定的搜索条件查询数据库。例如:用户提供了publisher ID(出版商编号),并想查看出版商的情况。

img572

要实现这一点,需要准备查询语句,在执行时刻接收where子句里适当的值。

PreparedStatement对象可以代表一个预编译的SQL语句,它是Statement接口的子接口。由于PreparedStatement接口会将传入的SQL命令编译并暂存在内存中,所以用某一SQL命令在程序中被多次执行时,使用PreparedStatement对象的执行速度要快于使用Statement对象的执行速度。因此,将需要多次执行的SQL语句创建为PreparedStatement对象,可以提高效率。

PreparedStatement对象继承Statement对象的所有功能,另外还添加了一些特定的方法。

PreparedStatement接口提供的常用方法如下:

img573

使用SQL指令SELECT对数据库进行记录查询操作,并返回Result对象。

ExecuteUpdate()

使用SQL指令INSERT、DELETE、UPDATE对数据库进行添加、插入和修改记录(Record)操作。

img574

给指定位置的参数设定日期型值。

img575

给指定位置的参数设定时间型数值。

img576

给指定位置的参数设定double型值。

img577

给指定位置的参数设定float型值。

img578

给指定位置的参数设定int型值。

img579

给指定位置的参数设定null型值。

上述各方法在操作失败时都会抛出SQLException异常。

PreparedStatement对象允许执行参数化查询。用Connection对象的prepareStatement()方法创建PreparedStatement对象。例如:

img580

Connection对象的prepareStatement()方法将SQL语句作为其参数。SQL语句中可以包含运行时可被INPUT参数替代的占位符。‘?’符号就是一个运行时可被INPUT参数替代的占位符。在执行PreparedStatement对象之前,必须先设置每个‘?’参数的值。这可以通过调用相应的setXXX()方法来完成,XXX是参数的数据类型,例如:

img581