使用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