`
jsczxy2
  • 浏览: 1273836 次
  • 性别: 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.

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

相关推荐

    Java中调用SQL Server存储过程

    在Java编程环境中,如Eclipse 3.3,与数据库进行交互是常见的需求,而调用SQL Server存储过程是其中一种高效的操作方式。存储过程是预编译的SQL语句集合,可以封装复杂的业务逻辑,提高性能并降低网络流量。本篇文章...

    Java中调用SQL存储过程示例

    总的来说,Java调用SQL Server存储过程涉及以下几个关键点: 1. 加载JDBC驱动。 2. 建立数据库连接。 3. 创建CallableStatement对象,设置SQL语句,使用问号作为占位符。 4. 注册输出参数,并设置输入参数。 5. 执行...

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

    本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种不同类型的存储过程调用方式。 1. 使用不带参数的存储过程 对于不带参数的存储过程,我们可以通过`Statement`对象的`executeQuery`方法,配合`{...

    jsp如何调用sqlserver存储过程

    在JavaServer Pages (JSP) 中调用SQL Server存储过程是一项常见的任务,特别是在构建Web应用程序时需要执行复杂的数据库操作。存储过程是预先编译的SQL语句集合,可以在数据库服务器上执行,提供性能优化和代码复用...

    java连接SqlServer数据库调用存储过程代码.docx

    通过以上两个示例,我们可以看到使用Java调用SQL Server数据库中的存储过程是比较简单的。关键在于正确地建立数据库连接、准备`CallableStatement`以及处理可能的异常情况。在实际应用中,还需要注意资源的管理和...

    sql server调用存储过程

    在Java应用程序中,你可以使用JDBC(Java Database Connectivity)来调用SQL Server的存储过程。以下是一个简单的示例: ```java import java.sql.*; public class CallSPExample { public static void main...

    java+sqlserver+存储过程

    通过学习《Java存储过程学习必看.doc》和《sqlserver存储过程入门例子加讲解.pdf》,你将能够深入了解如何在Java中有效地使用SQL Server的存储过程,包括参数传递、事务控制、异常处理等高级主题。这两个文档应该...

    java调用ms sql 存储过程(全)

    在Java编程中,调用Microsoft SQL Server(MS SQL)的存储...这就是Java调用MS SQL存储过程的基本步骤。确保遵循最佳实践,如使用连接池管理数据库连接,以及在生产环境中处理异常和错误,以提高程序的稳定性和性能。

    JSP调用SQL Server的存储过程

    此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,我们来看看数据库表`BookUser`的创建语句: ```sql CREATE TABLE [BookUser]( [UserID] [int] IDENTITY(1,1) ...

    java读取sqlserver image字段.docx

    在数据库应用开发过程中,经常会遇到需要存储图片等二进制数据的情况。SQL Server 提供了`IMAGE`类型来存储大容量的二进制数据。然而,如何有效地从数据库中读取这些二进制数据,并将其转换为可用的格式,如图像文件...

    jsp sql server存储过程调用的例子

    根据提供的文件信息,我们可以深入探讨如何在JSP中调用SQL Server存储过程,并结合具体的代码示例进行解析。 ### JSP 调用 SQL Server 存储过程 #### 一、存储过程创建与理解 首先,我们需要理解所提供的SQL ...

    JAVA连接sqlserver2008R2驱动sqljdbc4-3.0.jar

    3. **连接过程**:在Java中,使用`Class.forName()`方法加载驱动,然后通过`DriverManager.getConnection()`方法创建数据库连接。例如: ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");...

    Java调用SQLServer的存储过程详解[归类].pdf

    Java调用SQL Server的存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库操作,提高性能并提供更好的安全控制。本文将详细介绍如何通过Java来调用SQL Server的存储过程,分为不...

    sqlserver游标存储过程的使用

    接下来,我们将学习如何在SQL Server存储过程中使用游标: 1. **声明游标**:首先需要声明一个游标,指定其类型、源数据集(通常是查询语句)以及其属性。例如: ```sql DECLARE @MyCursor CURSOR FOR SELECT * FROM...

    java使用sqlserver2005

    本篇文章将详细介绍如何在Java中使用SQL Server 2005,以及如何附加数据库,帮助你更好地理解和掌握这个过程。 首先,我们需要确保已安装了以下组件: 1. SQL Server 2005:这是微软提供的关系型数据库管理系统,...

    hiberate SQL Server 2000 存储过程.pdf

    尽管在Hibernate中直接使用SQL Server 2000的存储过程会损失一定的数据库可移植性,但在某些情况下,使用存储过程可以带来性能优化、复杂业务逻辑处理以及安全性的提升。存储过程可以在服务器端执行,减少网络传输的...

Global site tag (gtag.js) - Google Analytics