当前位置: 移动技术网 > IT编程>开发语言>c# > 使用C#代码获取存储过程返回值

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

废话不多说,直接给大家贴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返回

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网