当前位置: 首页 > 编程语言 > C#

在asp.net中获取存储过程的返回值分享

时间:2023-04-11 11:45:29 C#

在asp.net中获取存储过程的返回值我有一个存储过程ALTERPROCTESTLOGIN@UserNamevarchar(50),@passwordvarchar(50)作为开始声明@returnint;设置@return=(SELECTCOUNT(*)FROMCPUserWHEREUserName=@UserNameANDPassword=@password);返回@返回;结束并在c#SqlConnectioncon=db.con;SqlCommandcmd=newSqlCommand("TESTLOGIN",con);cmd.CommandType=CommandType.StoredProcedure;SqlParameterparm=newSqlParameter("@return",SqlDbType.Int);parm.Direction=ParameterDirection.ReturnValue;cmd.Parameters.Add(parm);cmd.Parameters.Add(newSqlParameter("@UserName",txtUserName.Text.ToString().Trim()));cmd.Parameters.Add(newSqlParameter("@password",txtPassword.Text.ToString().Trim()));cmd.ExecuteNonQuery();con.Close();intid=Convert.ToInt32(parm.Value);但它总是返回0。请帮我解决这个问题你需要在代码中将Direction设置为ParameterDirection.ReturnValue,但不需要在SP中添加额外的参数。试试这个SqlParameterreturnParameter=cmd.Parameters.Add("RetVal",SqlDbType.Int);returnParameter.Direction=ParameterDirection.ReturnValue;cmd.ExecuteNonQuery();intid=(int)returnParameter.Value;2件事。在英语中,完成工作然后检索值。这是行不通的:cmm.ExecuteReader();inti=(int)cmm.Parameters["@RETURN_VALUE"].Value;这将起作用:SqlDataReaderreader=cmm.ExecuteReader();读者。关闭();foreach(SqlParameterprmincmd.Parameters){Debug.WriteLine("");Debug.WriteLine("名称"+prm.ParameterName);Debug.WriteLine("类型"+prm.SqlDbType.ToString());Debug.WriteLine("大小"+prm.Size.ToString());Debug.WriteLine("方向"+prm.Direction.ToString());Debug.WriteLine("值"+prm.Value);如果在阅读时不确定,请在处理器处理结果期间和之后检查参数的值。你可以试试这个。添加参数作为输出方向,执行查询后得到输出参数值。SqlParameterparmOUT=newSqlParameter("@return",SqlDbType.Int);parmOUT.Direction=ParameterDirection.Output;cmd.Parameters.Add(参数输出);cmd.ExecuteNonQuery();intreturnVALUE=(int)cmd.Parameters["@return"].Value;该过程从不返回值。您必须在存储过程中使用输出参数。ALTERPROCTESTLOGIN@UserNamevarchar(50),@passwordvarchar(50)@retvalueintoutputasBegindeclare@returnintset@return=(SelectCOUNT(*)FROMCPUserWHEREUserName=@UserNameANDPassword=@password)设置@retvalue=@returnEnd然后你必须从c#添加一个参数方向为out的sqlparameter。希望这是有道理的。如果您想知道如何将值从存储过程返回到VisualBasic.NET。请阅读本教程:如何从存储过程返回值我正在使用以下存储过程返回值。CREATEPROCEDUREusp_get_countASBEGINDECLARE@VALUEint;SET@VALUE=(SELECTCOUNT(*)FROMtblCar);返回@值;ENDGO这样做(对代码进行必要的改动)以上是C#学习教程:从获取asp.net中存储过程中返回值共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—SqlConnectioncon=newSqlConnection(GetConnectionString());骗局。打开();SqlCommandcmd=newSqlCommand("CheckUser",con);cmd.CommandType=CommandType.StoredProcedure;SqlParameterp1=newSqlParameter("用户名",username.Text);SqlParameterp2=newSqlParameter("密码",password.Text);cmd.Parameters.Add(p1);cmd.Parameters.Add(p2);SqlDataReaderrd=cmd.ExecuteReader();if(rd.HasRows){//做事情}else{lblinfo.Text="abc";}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: