使用C#代码获取存储过程返回值
程序员文章站
2022-09-04 23:35:28
废话不多说,直接给大家贴c#代码了。
///
/// 执行存储过程,返回" 返回值"
/// ...
废话不多说,直接给大家贴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# 托管资源和非托管资源