preparecall
该方法通过创建一个Callablestatement对象来调用数据库存储过程。CallableStatement对象提供了设置其IN和OUT参数的方法,以及用来执行调用存储过程的方法。
语法1 prepareCall(String sql)
sql:可以包含一个或多个“?”参数占位符的SQL语句。
示例 本示例调用Connection的prepareCall方法执行一个存储过程saveuser。
Connection conn = …… //省略部分代码
String sql = "{call saveuser(?,?)}"; //调用存储过程
conn.prepareCall(sql);
语法2 创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。此方法与上述 prepareCall方法相同,但它允许重写默认结果集类型和并发性。已创建结果集的可保存性可调用getHoldability()函数来确定。
CallableStatement prepareCall(String sql, int resultSetType,
int resultSetConcurrency) throws SQLException
sql:可以包含一个或多个“?”参数占位符的SQL语句。
resultSetType:结果集类型,分别是ResultSet.TYPE_FORWARD_ONLY或ResultSet.TYPE_scroll_ INsensitive或ResultSet.TYPE_SCROLL_SENSITIVE。
resultSetConcurrency:并发类型,分别是ResultSet.CONCUR_READ_ONLY 或ResultSet.CONCUR_ UPDATABLE。
示例 本示例调用Connection的prepareCall方法创建一个CallableStatement对象重写默认结果集的并发类型为只读,结果集类型光标只能向前移动。
Connection conn = …… //省略部分代码
String sql = "{call saveuser(?,?)}";
CallableStatement cs = conn.prepareCall(sql,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
语法3 创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。
CallableStatement prepareCall(String sql, int resultSetType,
int resultSetConcurrency, int resultSetHoldability)) throws SQLException
sql:可以包含一个或多个“?”参数占位符的SQL语句。
resultSetType 结果集类型,分别是ResultSet.TYPE_FORWARD_ONLY或ResultSet.TYPE_SCROLL_ INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE。
resultSetConcurrency 并发类型,分别是ResultSet.CONCUR_READ_ONLY 或ResultSet.CONCUR_ UPDATABLE。
resultSetHoldability为以下ResultSet常量:ResultSet.HOLD_CURSORS_OVER_COMMIT 或ResultSet.CLOSE_ CURSORS_AT_COMMIT。
示例 本示例调用Connection的prepareCall方法创建一个CallableStatement对象重写默认结果集的并发类型为只读,结果集类型光标只能向前移动,可保存性为开。
Connection conn = …… //省略部分代码
String sql = "{call saveuser(?,?)}";
CallableStatement cs = conn.prepareCall(sql,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY,
ResultSet.HOLD_CURSORS_OVER_COMMIT);
典型应用 数据库存储过程是应用得很广泛的数据库对象,在java程序中调用存储过程需要使用Connection接口的prepareCall方法。本示例通过调用存储过程来判断用户是否合法。判断成功的运行结果如图1.34所示。
本示例的关键代码如下:
public String executequery(String userName,String password){
String message = "验证失败"; //定义保存返回值的字符串对象
con = getCon(); //获取数据库连接
CallableStatement cs = null; //定义CallableStatement对象
String sql = "{call validateSelect('"+userName+"','"+passWord+"')}";
//定义调用存储过程语句
try {
cs = con.prepareCall(sql); //调用存储过程
ResultSet rest = cs.executeQuery(); //获取结果集
while(rest.next()){ //循环遍历结果集对象
message = "通过存储过程验证成功"; //设置对象信息
}
System.out.println(message);
} catch (SQLException e) {
e.printstacktrace();
}
return message; //返回String对象
}
本示例调用的名称为validateSelect,因此在实现本示例之前,数据库中要创建名称为validateSelect的存储过程,存储过程还要包含两个String类型的字符串参数。
相关阅读
毫无疑问,云是数据中心的未来,随着数据中心以及物联网和移动设备的快速发展,我们已经来到一个信息爆炸的时代,据IDC报告,当下数据以每
1 2 3 4 5 6 7 8 9 10 11 CREATE PROC [ EDURE ] procedure_name [ ; number ]
从浏览器输入一个URL(www.baidu.com)的全过程
1.根据域名到DNS中找到IP 2.根据IP建立TCP连接(三次握手) 3.连接建立成功发起http请求 4.服务器响应http请求 5.浏览器解析HTML代
近期,因为项目需求,需要根据ip地址去确定位置,在网上查了很多的方法,最终都没有很理想的,还是花钱的接口得劲,可是毕竟会有不给钱就让实
程序员不止眼前的逻辑和代码,还有底层的框架与架构。 1. 前言 最近在做一个复杂表格设计数据格式设置,其中用到了多叉树的原