`
njmnjx
  • 浏览: 234733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用C#、JAVA一次性取出存储过程中的各种返回值

阅读更多
本文来自CSDN博客http://blog.csdn.net/liushengmz/archive/2010/04/29/5541986.aspx

问题:在存储过程中,有时会遇到比较变态的东西,如一个存储过程中有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
  • 大小: 55.9 KB
  • 大小: 64 KB
分享到:
评论

相关推荐

    存储过程实例解释 事务实例解释 C#中使用带返回值的存储过程

    ### 存储过程实例解释与事务处理 #### 一、简单存储过程的创建与调用 首先,我们来看一个简单的存储过程示例:`dbo....通过合理地设计和使用存储过程,以及有效地处理事务,可以显著提升应用程序的质量和稳定性。

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    C#存储过程的细致使用+接收sql的返回值

    本文将详细介绍C#如何使用存储过程,以及如何接收SQL存储过程的返回值。 首先,存储过程(Stored Procedure)是一组预编译的SQL语句,它在数据库服务器上预先定义并存储,可以被多次调用执行,降低了网络通信的负担...

    Mssql 存储过程 返回值Return 与output 区别与应用.docx

    - 在C#等编程语言中,可以捕获`RETURN`的值来判断存储过程的执行情况,如示例所示,通过`cmd.Parameters["@RETURN_VALUE"]`获取返回值。 2. `OUTPUT`参数: - `OUTPUT`参数允许存储过程修改传递给它的参数的值,...

    C#WinForm获取子窗口返回值

    在C# WinForm应用开发中,常常需要创建子窗口(Child Forms)来处理特定的任务,如用户输入、确认操作或显示详细信息。当子窗口完成其任务后,通常需要将结果返回给父窗口(Parent Form),以便进行后续的业务逻辑...

    JAVA&C#调用存储过程代码

    本文将详细讲解如何使用Java和C#这两种广泛使用的编程语言来调用数据库中的存储过程。 首先,让我们了解一下Java中的存储过程调用。在Java中,我们主要依赖于JDBC(Java Database Connectivity)API来与数据库进行...

    关于sqlhelper调用存储过程和获取参数返回值

    这篇博文“关于sqlhelper调用存储过程和获取参数返回值”可能详细阐述了如何使用自定义的SqlHelper类来执行存储过程,并且获取存储过程中的输出参数值。下面将深入探讨这一主题。 首先,SqlHelper类一般包含一系列...

    C# Winform 窗体传值及接收返回值

    在实际开发中,根据具体需求,还可以结合使用其他机制,如使用静态类或单例模式存储共享数据,或者通过接口进行更复杂的通信。总之,选择合适的数据传递方式是确保代码可读性、可维护性和效率的关键。

    RSA加密JAVA转C# JAVA转PHP,C#转JAVA

    压缩包中的`rsa_c#2java`可能是一个C#编写的工具,用于将RSA密钥从C#格式转换为JAVA可使用的格式。使用该工具时,需要确保系统已安装.NET Framework环境,否则可能无法运行。转换后,可以在JAVA应用程序中直接使用...

    C#使用存储过程得到返回值和在DataGridView中进行批量删除示例

    在C#编程中,存储过程(Stored Procedure)是预编译的SQL代码集合,它可以在数据库服务器上执行,提供了一种高效、安全的方式来处理数据。本示例将讲解如何在C#应用程序中调用存储过程获取返回值,并利用这些值在...

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    C#存储过程用例

    本篇将深入探讨C#中使用存储过程的用例,旨在促进理解和应用。 一、存储过程的概念 存储过程是在数据库中预先编译好的SQL语句集合,它封装了特定功能,可被多次调用。存储过程可以提高应用程序的性能,减少网络流量...

    C#中的存储过程是如何使用的

    使用存储过程可以提高应用程序的性能,因为存储过程在第一次执行后会被编译并存储在数据库中,后续调用时无需再次编译。此外,存储过程还可以提高代码的重用性和安全性。 存储过程是数据库编程中的一个重要工具,它...

    C# 代码转换为 Java C# To Java Converter

    C# 代码转换为 Java C# To Java Converter 解除限制 C# 代码转换为 Java C# To Java Converter 解除限制 C# 代码转换为 Java C# To Java Converter 解除限制

    C# To JAVA Converter v17.10.6

    C# To Java converter是一款将C#代码片段或者C#项目转换为JAVA的工具。 转换所有版本的C#代码 评估所有引用的程序集和.NET项目,以便更完整地解析外部引用 许多转换和格式化选项 将C#代理和lambdas转换为Java接口...

    C#调用Java接口演示

    3. **C#调用Java接口**:在C#代码中,你可以像使用普通的.NET接口一样使用转换后的Java接口。例如: ```csharp using MyJavaInterface = MyJavaLibrary.MyJavaInterface; public class CSharpConsumer { private ...

    C#调用JAVA方法

    “UseJAVA.rar”和“JAVADemo.rar”可能是包含示例代码的压缩包,它们可能演示了如何使用IKVM.NET在C#中调用Java方法的具体步骤。解压这两个文件,打开C#项目,查看其中的代码以了解实际操作。通常,你会看到如何...

    VB6調C#輸出返回值

    本教程"VB6调C#输出返回值"聚焦于如何在VB6中调用C#函数,并获取返回值,这对于初学者来说是一次宝贵的学习机会。 首先,我们需要了解COM(Component Object Model)组件模型。VB6支持COM,它是一种二进制标准,...

    使用C#代码获取存储过程返回值

    以下是对如何使用C#获取存储过程返回值的详细解释: 1. **创建数据库连接**: 首先,你需要创建一个`SqlConnection`对象来建立与SQL Server数据库的连接。这通常涉及到提供连接字符串,其中包含服务器名称、数据库...

    C#中调用ORACLE的PACKAGE里方法和存储过程的应用

    在C#部分代码中,我们首先需要建立一个到ORACLE数据库的连接,然后使用OracleCommand对象调用PACKAGE中的方法和存储过程。在调用f_get函数时,我们需要将输入参数str传递给函数,并将返回值存储在result参数中。在...

Global site tag (gtag.js) - Google Analytics