`
jsczxy2
  • 浏览: 1255228 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java调用sql server存储过程示例

阅读更多

比如SQL Server的一个存储过程:

 

create procedure proc_test 
@q_type int,
@value int,
@count int output
as
begin
     update mytable set value = @value where type = @q_type
     set @count = @@rowcount
     select * from mytable where type = @q_type
end
go
这个存储过程,既有输出参数,又有返回结果集,而用java调用他,两者都要取到,则代码如下:

 

Connection conn = MyConnectionPool.getConnection();
CallableStatement cstmt = conn.prepareCall("{call proc_test(?,?,?)}");
cstmt.setInt(1, type);
cstmt.setInt(2, value);
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
ResultSet rs = cstmt.executeQuery();
while(rs.next()) {
   doSomeThingToResultSet(rs);
}
doSomeThingToOutParameter(cstmt.getInt(3));
rs.close();
cstmt.close();
conn.close();
其中的关键在于哪儿呢?

必须用cstmt.executeQuery()来取得结果集,用cstmt.execute()然后getResultSet()是取不到的,而executeQuery()能保证先执行update再select;
获得输出参数的cstmt.getInt(3)必须在处理完结果集的所有内容后再执行,如果把上述代码改成如下:
........
doSomeThingToOutParameter(cstmt.getInt(3));
while(rs.next()) {
   doSomeThingToResultSet(rs);
}
........

       后果就是,在rs.next()的时候,会抛出异常:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.

很有趣,不是么?
 
分享到:
评论

相关推荐

    SQL Server存储过程示例

    SQL Server存储过程示例,在存储工程中Transaction使用示例,游标的使用示例,自定义异常的使用示例,以及Java调用SQL Server存储过程的示例代码。包括JDBC和Spring两种调用方式。

    Java调用SQL Server的存储过程详解

     作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:  CREATE PROCEDURE GetContactFormalNames   AS  BEGIN  SELECT TOP 10 Title + "" "" + FirstName + "" "" + LastName ...

    Java中调用SQL存储过程示例

    用Java来调用server的存储过程例子,希望能帮上初学者的忙!

    函数、主外键、约束、触发器、存储过程及SQL命令大全

    datepart与datename的区别、Java中调用SQL+Server存储过程示例、JSP来操作SQL+SERVER中存储过程、SQL SERVER 2005登录验证设置SQL_Server触发器创建、删除、修改、查看示例、SQL_Server基本函数、经典SQL语句大全_主...

    sql下三种批量插入数据的方法

    使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据。  代码示例:  此例子为控制台输出程序,有两个类,一个为BulkData类,主要实现了表值参数和sql...

    将DataTable作为存储过程参数的用法实例详解

    最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List中,再转化为字符串传给存储过程,很是...

    DBHelper (附源码) 数据库连接通用接口-java版

    只需2个方法,getData、updateData你就可以完成查询和更新数据库数据,通过重载形式定义,支持普通SQL语句和存储过程。 目前DBHelper暂只支持连接主流的MySQL、Oracle、SQL Server。使用DBHelper将为你带来巨大便利...

    DBHelper 数据库连接通用接口-java版

    只需2个方法,getData、updateData你就可以完成查询和更新数据库数据,通过重载形式定义,支持普通SQL语句和存储过程。 目前DBHelper暂只支持连接主流的MySQL、Oracle、SQL Server。使用DBHelper将为你带来巨大便利...

    Java毕业设计-JAVA+SQL离散数学题库管理系统(源代码+论文+外文翻译).rar

    数据库采用SQL Server或MySQL等关系型数据库,确保数据的稳定存储和高效检索。 **二次开发定制:** 本系统具有良好的扩展性和可定制性,开发者可以根据实际需求进行二次开发,如添加新的功能模块、优化系统性能等...

    21天学会SQL

    6.1.2 创建使用SQL Server身份验证的 SQL Server登录名 120 6.1.3 利用Transact-SQL创建 登录账号 121 6.1.4 创建数据库用户 122 6.1.5 使用Transact-SQL创建 数据库用户 123 6.1.6 登录账号和数据库用户的关系 124 ...

    Java源码包100个设计实例.zip

    Java+sqlserver2000做的员工管理系统.rar Java+SQL信用卡管理系统源代码.rar Java+XML写的RSS阅读器.rar Java+XML日程提醒系统.rar Java24点游戏逼真图形版代码.rar JavaScript万年历.rar Java二进制IO类与文件复制...

    java源码包---java 源码 大量 实例

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    sql使用cast进行数据类型转换示例

    您可能感兴趣的文章:详解SQL Server中的数据类型详解MySQL数据类型int(M)中M的含义mysql存储引擎和数据类型(二)Java数据类型与MySql数据类型对照表SQL Server数据类型转换方法SQL Server比较常见数据类型详解...

    WebDAVServerSamplesJava:基于IT的Java中的WebDAV服务器示例Hit Hit for Java

    Java和IT提供了一些IT命中的Java WebDAV服务器库,其中有一些Java和Kotlin示例,演示了如何使用SQL后端或文件系统存储构建WebDAV服务器。 您可以调整这些样本,以从几乎任何后端存储(包括CMS / DMS / CRM,Azure或...

    java源码包4

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时...

    JAVA上百实例源码以及开源项目

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动...

    java源码包3

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java源码包2

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

Global site tag (gtag.js) - Google Analytics