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

作者:柔城 时间:2021-08-18 08:29:46 

废话不多说,直接给大家贴C#代码了。


/// <summary>
/// 执行存储过程,返回" 返回值"
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>执行存储过程的返回值</returns>
public static int RunProcedureWithReturn(string storedProcName, IDataParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
/// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}

ps:在C#中调用存储过程中的两种返回值


//存储过程
//create proc authors_count @outrus int output
//as
//declare @authors int
//select @authors=count(*) from authors
//set @outrus=@authors
//return @authors
System.Data.SqlClient.SqlConnection sqlcon=new System.Data.SqlClient.SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");
System.Data.SqlClient.SqlCommand sqlcmd=new System.Data.SqlClient.SqlCommand("authors_count",sqlcon);
sqlcmd.CommandType=System.Data.CommandType.StoredProcedure;
// sqlcmd.CommandText="authors_count";
// sqlcmd.Connection=sqlcon;
sqlcmd.Parameters.Add("@rus",System.Data.SqlDbType.Int);
sqlcmd.Parameters.Add("@outrus",System.Data.SqlDbType.Int);
sqlcmd.Parameters[0].Direction=System.Data.ParameterDirection.ReturnValue;
sqlcmd.Parameters[1].Direction=System.Data.ParameterDirection.Output;
sqlcon.Open();
//int res=(int)sqlcmd.ExecuteNonQuery();//此时返回的不是存储过程的返回值,以上只是返回delete,update,insert所影响的行数
sqlcmd.ExecuteNonQuery();
string res=sqlcmd.Parameters[0].Value.ToString();//这样就可以得到存储过程的返回值
sqlcon.Close();
this.label1.Text="存储过程的返回值是:"+res.ToString();//由return 返回
this.label2.Text="存储过程中返回的output值:"+sqlcmd.Parameters[1].Value.ToString();//由output返回
标签:c,获取,执行,存储过程,返回值
0
投稿

猜你喜欢

  • Groovy动态语言使用教程简介

    2022-04-28 15:05:54
  • 使用maven命令安装jar包到本地仓库的方法步骤

    2022-10-19 21:57:58
  • 详解Java的Hibernat框架中的Map映射与SortedMap映射

    2021-08-21 20:31:59
  • springboot 通过代码自动生成pid的方法

    2023-11-27 02:54:57
  • SpringCloud 搭建企业级开发框架之实现多租户多平台短信通知服务(微服务实战)

    2022-12-04 13:22:53
  • java.lang.StackOverflowError出现的原因及解决

    2022-03-21 08:12:21
  • Java数据结构之顺序表的实现

    2023-06-22 00:47:26
  • Android通过应用程序创建快捷方式的方法

    2021-07-08 00:41:09
  • SpringBoot整合WebService的实现示例

    2023-05-25 12:37:55
  • 使用@RequestParam设置默认可以传空值

    2023-07-01 08:34:57
  • Android学习之Broadcast的简单使用

    2023-11-19 15:18:02
  • Java并发问题之乐观锁与悲观锁

    2022-07-13 19:59:05
  • HttpClient 在Java项目中的使用详解

    2021-12-06 02:36:57
  • Jenkins Pipeline 部署 SpringBoot 应用的教程详解

    2022-09-26 14:06:27
  • 千万不要被阶乘吓倒

    2021-10-06 22:35:45
  • org.slf4j.Logger中info()方法的使用详解

    2021-05-31 20:10:36
  • java中javamail发送带附件的邮件实现方法

    2023-12-06 02:46:30
  • 通过Android trace文件分析死锁ANR实例过程

    2023-06-11 04:58:03
  • Flutter加载图片流程之ImageCache源码示例解析

    2023-07-04 01:56:23
  • Android动态加载布局实现技巧介绍

    2022-03-06 13:31:48
  • asp之家 软件编程 m.aspxhome.com