33、Connection.prepareCall方法——调用数据库存储过程
来源:互联网 发布:安畅网络 程小中 编辑:程序博客网 时间:2024/04/27 21:33
该方法通过创建一个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类型的字符串参数。
- 33、Connection.prepareCall方法——调用数据库存储过程
- prepareCall()方法调用存储过程
- prepareCall方法执行存储过程
- prepareCall()方法执行存储过程
- prepareCall方法执行存储过程
- Connection.prepareCall对Mysql存储过程产生异常的解决方法
- prepareCall()执行存储过程
- PrepareCall() 执行存储过程
- prepareCall()执行存储过程
- java通过prepareCall调用oracle返回游标的存储过程
- C#——调用存储过程方法
- Java通过connection对象调用存储过程
- 数据库—存储过程。
- C# 数据库操作类(存储过程)及调用方法
- C# 数据库操作类(存储过程)及调用方法
- Mybatis调用数据库的存储过程和方法
- Mybatis调用数据库的存储过程和方法
- asp调用数据库存储过程
- Xcode个人常用插件总结
- iOS开发-环信添加好友
- Activity 和 Fragment 的交互
- 319. Bulb Switcher
- 三层架构
- 33、Connection.prepareCall方法——调用数据库存储过程
- HDU 1556Color the ball
- 使用redis缓存网站首页
- Java微信公众平台开发(三)——接收消息的分类及实体的创建
- windows实现端口映射
- mock server 学习笔记
- same-tree
- 史上最全的CSS hack方式一览
- Java微信公众平台开发(四)——回复消息的分类及实体的创建