必威体育Betway必威体育官网
当前位置:首页 > IT技术

33、Connection.prepareCall方法——调用数据库存储过程

时间:2019-10-11 08:15:46来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

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报告,当下数据以每

SQLSERVER存储过程语法详解

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代

php调用纯真ip数据库,返回具体地址的方法

近期,因为项目需求,需要根据ip地址去确定位置,在网上查了很多的方法,最终都没有很理想的,还是花钱的接口得劲,可是毕竟会有不给钱就让实

js 递归调用

程序员不止眼前的逻辑和代码,还有底层的框架与架构。 1. 前言 最近在做一个复杂表格设计数据格式设置,其中用到了多叉树的原

分享到:

栏目导航

推荐阅读

热门阅读