Java Connection.prepareCall()方法:调用数据库存储过程
Java Connection.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 方法。本示例通过调用存储过程来判断用户是否合法。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 类型的字符串参数。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算