问题:在存储过程中,有时会遇到比较变态的东西,如一个存储过程中有output返回值,有return返回值,还有查询的返回值TABLE,遇到这样的存储过程真是郁闷,一次性把所有的返回值取出来还真的有点麻烦。
1、 首先来看这个存储过程吧
CREATE PROCEDURE ParaTest
@paraout varchar(20) output
AS
BEGIN
SET NOCOUNT ON
SELECT * FROM USERS
SELECT @paraout = 'outputvalue'
RETURN 10
END
为了方便大家看得更加清清楚楚,我已经将数据赋值写得很直观的了。USERS是一个表
在sql中要取得这个存储过程的返回值可以用以下方式
DECLARE @paraoutput varchar(20)
DECLARE @parareturn varchar(20)
EXEC @parareturn= ParaTest @paraout = @paraoutput output
SELECT @paraoutput AS 'output',@parareturn AS 'return'
结果如下
2、 用C#取得返回值的方法如下(不做解释了,很简单的)
string stroutput = "";
string strreturn = "";
string conStr = "Server=.;DataBase=Test;Uid=sa;Pwd=";
SqlConnection conn = new SqlConnection(conStr);
conn.Open();
SqlCommand cmd = new SqlCommand("ParaTest",conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter spa = new SqlParameter("@paraout",SqlDbType.VarChar,20);
spa.Direction = ParameterDirection.Output;
cmd.Parameters.Add(spa);
SqlParameter spareturn = new SqlParameter("@return", SqlDbType.VarChar,10);
spareturn.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(spareturn);
cmd.ExecuteNonQuery();
stroutput = cmd.Parameters["@paraout"].Value.ToString();
strreturn = cmd.Parameters["@return"].Value.ToString();
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
Text_ParaReturn.Text = "output value:" + stroutput + ";return value:" + strreturn;
dgv_ParaSet.DataSource = dt;
sda.Dispose();
cmd.Dispose();
conn.Dispose();
结果如下:
3、 JAVA取得返回值的方法如下
public static void main(String[] args)
{
new com.microsoft.sqlserver.jdbc.SQLServerDriver();
String strOutput = "";
String strReturn = "";
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
String conUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=Test;User=sa;pwd=";
try
{
conn = DriverManager.getConnection(conUrl);
cstmt = conn.prepareCall("{ ? = call ParaTest( ? ) }");
cstmt.registerOutParameter(1,Types.VARCHAR);
cstmt.registerOutParameter(2,Types.VARCHAR);
rs = cstmt.executeQuery();
while(rs.next())
{
System.out.println(rs.getInt(1) + "---" + rs.getString(2));
}
strReturn = cstmt.getString(1);
strOutput = cstmt.getString(2);
System.out.println("OutPut:" + strOutput+"---Return:"+strReturn); rs.close();
cstmt.close();
conn.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
结果如下:
1---fsdaf
2---f
3---sd
OutPut:outputvalue---Return:10
4、 备注:
在上面的代码中,用C#取返回值的时候,其实它是执行了两次存储过程的,cmd.ExecuteNonQuery();这里执行一次,sda.Fill(dt);也执行了一次。而JAVA代码取得返回值中,它仅仅只是招行了一次存储过程,就拿到了全部的数据,JAVA主要是使用了游标进行取数据,而C#是一次性取来放到DATATABLE这个容器里面去,中间C#帮我们做了一次数据提取,估计也是用游标取得的数据。不管怎样,终究是取到所有数据了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liushengmz/archive/2010/04/29/5541986.aspx
分享到:
相关推荐
压缩包中的`rsa_c#2java`可能是一个C#编写的工具,用于将RSA密钥从C#格式转换为JAVA可使用的格式。使用该工具时,需要确保系统已安装.NET Framework环境,否则可能无法运行。转换后,可以在JAVA应用程序中直接使用...
### 存储过程实例解释与事务处理 #### 一、简单存储过程的创建与调用 首先,我们来看一个简单的存储过程示例:`dbo....通过合理地设计和使用存储过程,以及有效地处理事务,可以显著提升应用程序的质量和稳定性。
本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...
本主题聚焦于“C++转换Java”和“C#转换Java”以及“C++转换C#”,这三个转换过程涉及到了不同的编程语言特性和挑战。 C++到Java的转换是一个复杂的过程,因为C++是一种静态类型的、编译式的、面向对象的语言,而...
C# To Java converter是一款将C#代码片段或者C#项目转换为JAVA的工具。 转换所有版本的C#代码 评估所有引用的程序集和.NET项目,以便更完整地解析外部引用 许多转换和格式化选项 将C#代理和lambdas转换为Java接口...
标题"JAVA类库转换成C#类库工具"以及描述中提到的"C#引用JAVA类库"、"C#调用JAVA类库"和"C#解析JAVA类库"都涉及到一个关键的技术:IKVM。 IKVM是“Java to .NET”的一个开源实现,它允许C#或其他.NET语言直接引用和...
本文将详细介绍C#如何使用存储过程,以及如何接收SQL存储过程的返回值。 首先,存储过程(Stored Procedure)是一组预编译的SQL语句,它在数据库服务器上预先定义并存储,可以被多次调用执行,降低了网络通信的负担...
C# 代码转换为 Java C# To Java Converter 解除限制 C# 代码转换为 Java C# To Java Converter 解除限制 C# 代码转换为 Java C# To Java Converter 解除限制
【一周学会C#——java程序员转.NET必看】 C#是一种由微软开发的面向对象的编程语言,设计用于.NET Framework上。对于从Java转到.NET平台的程序员来说,理解C#的基本概念和语法是非常重要的。以下是一些关键知识点:...
【标题】"Java 转成 C#小工具" 是一个专门用于将Java代码转换为C#代码的实用程序,它旨在帮助开发者在处理跨平台项目或者从Java迁移到C#时提高效率。这个工具提供了基本但实用的功能,能够有效地进行语言间的代码...
标题中的"C# Java互相转换工具"指的是一个软件或库,旨在帮助开发者在C#和Java之间进行代码迁移或互操作。这个工具可能是为了方便那些在两个不同平台间工作或者需要跨语言共享代码的开发人员。从描述中的链接来看,...
在C# WinForm应用开发中,常常需要创建子窗口(Child Forms)来处理特定的任务,如用户输入、确认操作或显示详细信息。当子窗口完成其任务后,通常需要将结果返回给父窗口(Parent Form),以便进行后续的业务逻辑...
标题"java代码转c#"指的就是这个过程,即把用Java编写的程序转换成C#语言。这个过程可以手动进行,也可以借助一些自动化工具,如Demo_Java_to_CSharp_Converter这样的工具,它可能是一个能够帮助开发者进行代码转换...
- 在C#等编程语言中,可以捕获`RETURN`的值来判断存储过程的执行情况,如示例所示,通过`cmd.Parameters["@RETURN_VALUE"]`获取返回值。 2. `OUTPUT`参数: - `OUTPUT`参数允许存储过程修改传递给它的参数的值,...
总之,“C# to Java 代码转换工具”是一个旨在简化代码迁移过程的实用工具,它通过自动化处理大量语法和结构差异,帮助开发者跨越语言屏障,加速项目的进展。在理解和掌握C#与Java之间的差异的同时,利用这样的工具...
本文将详细讲解如何使用Java和C#这两种广泛使用的编程语言来调用数据库中的存储过程。 首先,让我们了解一下Java中的存储过程调用。在Java中,我们主要依赖于JDBC(Java Database Connectivity)API来与数据库进行...
这篇博文“关于sqlhelper调用存储过程和获取参数返回值”可能详细阐述了如何使用自定义的SqlHelper类来执行存储过程,并且获取存储过程中的输出参数值。下面将深入探讨这一主题。 首先,SqlHelper类一般包含一系列...
C#主要应用于Microsoft的.NET框架,而Java则是一种跨平台的语言,可以在各种操作系统上运行。当我们需要将C#代码转换为Java代码时,可能会涉及到语言特性、API映射以及代码结构的调整。下面我们将深入探讨这个过程。...
在实际开发中,根据具体需求,还可以结合使用其他机制,如使用静态类或单例模式存储共享数据,或者通过接口进行更复杂的通信。总之,选择合适的数据传递方式是确保代码可读性、可维护性和效率的关键。
试用演示版的Java文件夹转换到C#转换器2000行的代码片段转换到200行一次。 官方网站 http://www.tangiblesoftwaresolutions.com/ 有需要其他转换器的可以给我留言,我可以帮你破解. Instant C# converts VB code to...