首页 / 软件开发 / JAVA / 使用命名参数处理CallableStatement
使用命名参数处理CallableStatement2010-04-27 IBM Akhilesh K. Tiwary简介:JDBC中的语句处理在JDBC应用程序中,JDBC语句对象用于将SQL语句发送到数据库服务器。一个语句对象与一个连接相关联,应用程序与数据库服务器之间的通信由语句对象来处理。JDBC中有三种类型的语句对象:常规语句(General statement)预置语句(Prepared statement)可调用语句(Callable statement)语句对象与一个连接相关联,所以要创建一个语句对象,首先应该建立一个数据库连接。创建连接清单 1中的代码示例演示了如何创建连接:清单 1.装载 Informix驱动程序并创建一个连接的代码示例Connection con = null;
try {
Class.forName("com.informix.jdbc.IfxDriver");
String url = "jdbc:informix-sqli://hostname:port_number/dbname:
informixserver=servername; userid=userid;password=pwd;";
con = DriverManager.getConnection(url);
}现在逐个考察这三种类型的语句对象。常规语句可以使用连接的createStatement方法创建这种语句。这种语句专用于不需要传递任何值作为参数的SQL语句。清单 2. 演示创建语句的示例代码Statement stmt = con.createStatement();
cmd = "create database testDB;";
rc = stmt.executeUpdate(cmd);
stmt.close();预置语句预置语句是 statement 类的一个子类。预置语句与 statement 类的主要区别在于,前者可以只编译和优化一次,然后通过设置不同的参数值多次使用。所以,如果想多次执行一条语句,那么预置语句是更好的选择。由于已经预先编译好,所以减少了执行时间。因此,预置语句的优点是,它不仅包含一条 SQL语句,而且还是一条预先编译好的SQL语句。另一个区别是,SQL语句在创建后就被提供给预置语句。清单 3. 解释预置语句的示例代码PreparedStatement pstmt = con.prepareStatement("UPDATE tab1 "+
"set col1 = ? where key = 1");
pstmt.setShort(1, (short)2);
int rowcount = pstmt.executeUpdate();在此,同一个预置语句可用于不同的col1 值。参数一旦设定,它的值将保持不变,直到被重新设置或者 clearParameters 被调用。这项特性使得预置语句可以用于批量处理 INSERT/UPDATE。