CallableStatement接口.txt

来源:互联网 发布:ncbi数据库使用方法 编辑:程序博客网 时间:2024/05/16 09:11

调用类Connection中的方法prepareCall创建一个CallableStatement对象:

CallableStatement csm=con.PrepareCall("{call test(?,?)}");

CallableStatement接口继承了PreparedStatement接口中的setXXX方法。对IN参数进行赋值。对于OUT参数CallableStatement提供方法进行类型注册和检索

类型注册:
  方法一:

        registerOutParamenter(int parameterIndex,int sqlType);//除了对Numeric和Decimal两种类型外的其他类型均适用

  方法二:
        registerOutParameter(int parameterIndex.,int sqlType,int scale);//scale是一个大于等于零的整数,这是一个精度值,代表了所注册的类型中小数点右边允许的位数。

 


 CallableStatement csm=conn.prepareCall("{call test(?,?)}");
 csm.registerOutParameter(2,java.sql.Types.VARCHAR);//对test 这一存储过程中的第二个参数进行输出类型注册,注册的SQL类型为java.sql.Type.VARCHAR


CallableStatement一般用于执行存储过程,所以执行结果可能不同(可能为多个ResultSet或多次修改记录或者两者都有)所以对CallableStatement一般调用方法execute()执行。

 


存储过程sp_count:

 CREATE PROCEDURE sp_count
   @iSum bigint output
 AS
 SELECT @iSum=sum(p_price*p_quantity) FROM product
 GO

调用存储过程的JSP文件callable.jsp:

 <%@ page contentType="text/html;charset=gb2312 language=java"%>
 <%@ page import="java.sql.*"%>
 <html>
 <head><title>商品总价统计</title></head>
 <body>
<%
 Connection conn=null;

try{
      Class.forName("com.microsoft.sqlserver.JDBC.SQLServerDriver");//加载Microsoft公司的JDBC驱动程序
      String strConn="JDBC:sqlserver://LIUZC\\SQLEXPRESS:1433;DatabaseName=a";//设置连接字符串
      String strUser="sa";
      String strPassword="liuzc518";
     conn=DriverManager.getConnection(strConn,strUser,strPassword);//创建连接对象
     CallableStatement cstmt=conn.prepareCall("{call sp_count(?)}");//利用conn.prepareCall()方法创建CallableStatement对象
     cstmt.registerOutParameter(1,Types.INTEGER);//registerOutParameter注册输出参数(顺序和类型)//在执行一个存储过程之前,必须先对其中的OUT参数进行类型注册。
     cstmt.executeUpdate();//CallableStatement对象的executeUpdate()方法调用存储过程。
     int iCount=cstmt.getInt(1);//获得过程输出参数的值
     cstmt.close();
     conn.close();
     out.println("商品总价为:"+iCount);
}
catch(Exception e){
  out.println(e.toString);


}
%>
</body>


</html>

 

 

 

 

 

 

 

 

 

 

 


 

原创粉丝点击