日期:2014-05-16 浏览次数:20440 次
简介:JDBC 中的语句处理
在 JDBC 应用程序中,JDBC 语句对象用于将 SQL 语句发送到数据库服务器。一个语句对象与一个连接相关联,应用程序与数据库服务器之间的通信由语句对象来处理。
JDBC 中有三种类型的语句对象:
语句对象与一个连接相关联,所以要创建一个语句对象,首先应该建立一个数据库连接。
创建连接
清单 1 中的代码示例演示了如何创建连接:
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 语句。
Statement stmt = con.createStatement(); cmd = "create database testDB;"; rc = stmt.executeUpdate(cmd); stmt.close(); |
|
|
预置语句
预置语句是 statement 类的一个子类。预置语句与 statement 类的主要区别在于,前者可以只编译和优化一次,然后通过设置不同的参数值多次使用。所以,如果想多次执行一条语句,那么预置语句是更好的选择。由于已经预先编译好,所以减少了执行时间。因此,预置语句的优点是,它不仅包含一条 SQL 语句,而且还是一条预先编译好的 SQL 语句。另一个区别是,SQL 语句在创建后就被提供给预置语句。
PreparedStatement pstmt = con.prepareStatement("UPDATE tab1 "+ "set col1 = ? where key = 1"); pstmt.setShort(1, (short)2); int rowcount = pstmt.executeUpdate(); |
在此,同一个预置语句可用于不同的 col1 值。参数一旦设定,它的值将保持不变,直到被重新设置或者 clearParameters
被调用。这项特性使得预置语句可以用于批量处理 INSERT
/UPDATE
。
批量更新
通过设置多个值,批量更新特性提高了需要多次执行的语句的性能。这样可以将多个更新操作提交到一个数据源并进行一次性处理。语句对象也可以使用批量更新。但语句对象提交不同的 SQL 语句进行批处理,而预置语句提交的是一组参数。
清单 4 显示了如何使用预置语句进行批量插入:
PreparedStatement pst = conn.prepareStatement("insert into tab1 values (?)"); for loop.... { pst.setInt (1, i); pst.addBatch(); } pst.executeBatch(); |