`

java调用sql server存储过程

    博客分类:
  • Java
阅读更多

为了便于测试,先创建一个简单的表:

 

CREATE TABLE test
(
	id INT,
	name VARCHAR(10)
)
INSERT INTO test VALUES(1,'safsdf');
INSERT INTO test VALUES(2,'aaaaa');
INSERT INTO test VALUES(3,'bbbbb');

 

一.存储过程返回单个结果集

存储过程1如下所示:

 

IF OBJECT_ID ('dbo.pTestProc1') IS NOT NULL
	DROP PROCEDURE dbo.pTestProc1
GO
CREATE PROCEDURE pTestProc1
(
	@id INT,
	@name VARCHAR(20) OUTPUT
)
AS
BEGIN
	SELECT @name = name FROM test WHERE id = @id
END 

 存储过程2如下所示:

 

IF OBJECT_ID ('dbo.pTestProc2') IS NOT NULL
	DROP PROCEDURE dbo.pTestProc2
GO
CREATE PROCEDURE pTestProc2
AS
BEGIN
DECLARE @sql VARCHAR(100)
   SET @sql = 'SELECT id, name FROM test '
   EXEC(@sql)
END 

 

 调用存储过程1,2的代码如下({call dbo.pTestProc1或2}):

 

Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("{call dbo.pTestProc1}");
		while (rs.next()) {
			System.out.println(rs.getString("id") + ":" + rs.getString("name"));
		}

输出结果如下:

1:safsdf

2:aaaaa

3:bbbbb

 

 

二.使用带有输入参数的存储过程

存储过程3如下所示:

 

IF OBJECT_ID ('dbo.pTestProc3') IS NOT NULL
	DROP PROCEDURE dbo.pTestProc3
GO
CREATE PROCEDURE pTestProc3
(
	@id INT
)
AS
BEGIN
	SELECT id, name  FROM test WHERE id = @id
END 

  调用代码如下:

 

Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("{call pTestProc3(1)}");
		while (rs.next()) {
			System.out.println(rs.getString("id") + ":" + rs.getString("name"));
		}
		或
	PreparedStatement pstmt = conn.prepareStatement("{call pTestProc3(?)}"); 
		 pstmt.setInt(1, 1); 
		 ResultSet rs = pstmt.executeQuery(); 
		 while (rs.next()) {
				System.out.println(rs.getString("id") + ":" + rs.getString("name"));
			}
	或
	CallableStatement cstmt = conn.prepareCall("{call dbo.pTestProc3(?)}"); 
		cstmt.setInt(1, 1); 
	ResultSet rs = cstmt.executeQuery(); 
		while (rs.next())  
			System.out.println(rs.getString("id") + ":" + rs.getString("name"));

 输出结果都是:

1:safsdf

 

 

三.使用带有输出参数的存储过程

存储过程4如下所示:

 

IF OBJECT_ID ('dbo.pTestProc4') IS NOT NULL
	DROP PROCEDURE dbo.pTestProc4
GO
CREATE PROCEDURE pTestProc4
(
	@id INT,
	@name VARCHAR(20) OUTPUT
)
AS
BEGIN
	SELECT @name = name FROM test WHERE id = @id
END 

 调用代码如下:

 

CallableStatement cstmt = conn.prepareCall("{ call dbo.pTestProc4(?,?)}");
		 //设置IN参数
		 cstmt.setInt(1,1);
		 //注册OUT参数
		 cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
		 //执行存储过程
		 cstmt.execute();
		//获取参数值
		 System.out.println( cstmt.getString(2) );

输出结果:safsdf 

 

参考文章:http://www.qqread.com/java/2008/04/w407397.html

 

分享到:
评论

相关推荐

    java调用sqlserver存储过程.pdf

    在 Java 应用程序中,可以使用 JDBC(Java Database Connectivity)来调用 SQL Server 数据库中的存储过程。在本例中,使用了 `java.sql` 包中的 `CallableStatement` 对象来调用 `InsertUser` 存储过程。 5. JDBC ...

    Java中调用SQL Server存储过程

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

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

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

    Java调用带参数的存储过程并返回集合

    本话题将详细讲解如何使用Java调用带有参数的Oracle存储过程,并获取存储过程返回的集合。 首先,Oracle存储过程是一种预编译的SQL语句集合,它可以在数据库服务器端执行,提高性能,减少网络传输。`PROCEDURE.sql`...

    jsp如何调用sqlserver存储过程

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

    java+sqlserver+存储过程

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

    Java调用SQL_Server的存储过程详解1

    Java调用SQL_Server的存储过程详解 1使用不带参数的存储过程 2使用带有输入参数的存储过程 3使用带有输出参数的存储过程 4 使用带有返回状态的存储过程 5 使用带有更新计数的存储过程

    SQL Server中存储过程比直接运行SQL语句慢的原因

    Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计信息来优化执行计划,但这种优化方式有时可能会导致执行计划的不正确,从而影响存储过程的执行速度。 在了解这个问题之前,我们通常认为存储...

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

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

    Java中调用SQL存储过程示例

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

    sql server调用存储过程

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

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

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

    JSP调用SQL Server的存储过程

    ### JSP调用SQL Server的存储过程 在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,...

    SQLServer2008分页存储过程和java调用

    PagingOperation数据库SQLServer2008分页存储过程(和java调用存储过程源代码): 调用存储过程进行分页查询速度快,尤其是数据量超过50万条的表非常重要,此代码是我们项目中使用的,实际使用情况稳定,也希望大家...

    java调用oracle sqlserver存储过程共用方法

    ### Java调用Oracle与SQL Server存储过程的通用方法 #### 1. **建立数据库连接** 在Java中,使用JDBC(Java Database Connectivity)来连接数据库。根据`dbType`参数动态选择正确的数据源,即Oracle或SQL Server的...

    实例讲解JSP调用SQL Server的存储过程

    在JSP中,我们可以使用Java的JDBC(Java Database Connectivity)来连接SQL Server数据库,并调用存储过程。在这个例子中,我们使用了JDBC来连接SQL Server数据库,并调用了InsertUser存储过程。JSP代码中,我们首先...

Global site tag (gtag.js) - Google Analytics