创建PreparedStatement对象和设置参数¶
创建PreparedStatement对象的方式和Statement对象一样,不同之处在于SQL语句必须在PreparedStatement对象创建的时候就作为参数提供,比如上面的例子。
在执行 PreparedStatement 对象之前,必须设置每个用“?”表示的参数的值。这可通过调用 setXXX方法来完成,其中 XXX是与该参数相应的类型。例如,如果参数具有 Java类型String,则使用的方法就是 setString。setXXX 方法的第一个参数是要设置的参数的序号(从 1算起),第二个参数是设置给该参数的值。例如上面的例子中设置第一个参数的值为整型数100,第二个参数的值为字符串“VALUE100”。
setObject方法用于将JAVA语言中的对象转换为某个JDBC类型。转换可以是显式的,也可以按照缺省的映射规则进行隐式转换。下面是两个例子。
将一个JAVA的INTEGER对象显式转换成JDBC SMALLINT类型:
Integer value = new Integer(10);
ps.setObject(1, value, java.sql.Types.SMALLINT);
如果没有类型参数,调用setObject方法会隐式的按照缺省映射规则进行转换:
value = new Integer(15);
// JAVA的INTEGER对象value被隐式转换为JDBC INTEGER类型
ps.setObject(1, value);
另外,setNull方法还允许程序员将 JDBC NULL值作为IN 参数发送给数据库。但要注意,必须指定参数的 JDBC类型。当把Java null值传递给 setXXX方法时(如果它接受 Java对象作为参数),也将同样把 JDBC NULL发送到数据库。更详细的信息请参考Sun Microsystems公司发布的JDBC 3.0 Specification。
设置了给定语句的参数值,就可执行该语句。设置的参数可以被重复利用, 每设置一次参数可以多次执行PreparedStatement对象。如果设置参数值后, 又重新设置了该参数的值,那么最后一次设置的值,将覆盖前面所有的值。 如果用户不需要参数的值,那么用户可以调用clearParameters()方法,来清除所有设置的值。