快速业务通道

使用命名参数处理CallableStatement - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

使用命名参数处理CallableStatement

时间:2010-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。

使用命名参数处理CallableStatement(2)

时间:2010-04-27 IBM Akhilesh K. Tiwary

批量更新

通过设置多个值,批量更新特性提高了需要多次执行的语句的性能。这样可以将多个更新操作提交到一个数据源并进行一次性处理。语句对象也可以使用批量更新。但语句对象提交不同的SQL语句进行批处理,而预置语句提交的是一组参数。

清单 4 显示了如何使用预置语句进行批量插入:

清单 4. 演示批量更新的示例代码

PreparedStatement pst = conn.prepareStatement("insert into tab1 values (?)"); for loop.... { pst.setInt (1, i); pst.addBatch(); } pst.executeBatch();

addBatch方法将语句添加到一个缓存中,然后使用executeBatch()方法转储到数据库中。所以它节省了语句的编译/优化,因为它只编译一次(对于预置语句),而且还节省了与服务器之间的往返,因为它一次性发送了批量插入。

可调用语句

这是调用SQL语句的第三种方法,它提供了一种从Java™程序中调用服务器上的存储过程的方式。可调用语句也需要先作准备,然后使用set方法设置它们的参数。可以通过以下两种方式设置参数值:

顺序位置

命名参数

顺序位置是传统的参数设置方式,它根据参数在CallableStatements中的位置来设置参数。但是,命名参数则提供了更大的灵活性,它允许根据名称而不是顺序位置来设置参数。在调用例程时,必须以名称

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号