C#中使用带返回值的存储过程

it2022-05-09  25

例如在向数据库添加新数据时,需要检测是否有重复本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。存储过程如下:

CREATE PROCEDURE DInstitute_Insert@InstituteNO nvarchar(6),@InstituteName nvarchar(40) ASdeclare @return int,@count intif(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='') select @return=3--返回3表示提交的数据有空值elsebegin select @count=count(1) from DInstitute where InstituteNO=@InstituteNO if(@count>0)  select @return=1--返回1表示编号有重复 else begin   insert into DInstitute (InstituteNO,InstituteName) values  (@InstituteNO,@InstituteName)   if(@@error>0)   select @return=2--返回2表示数据操作错误  else   select @return=0--返回0表示数据操作成功 endendreturn @returnGO 其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。 在C#中调用本存储过程的代码如下: //执行插入操作            SqlCommand com1 = new SqlCommand("DInstitute_Insert", DBcon);            if (com1.Connection.State == ConnectionState.Closed)                com1.Connection.Open();            com1.CommandType = CommandType.StoredProcedure;            com1.Parameters.Add(new SqlParameter("@InstituteNO",SqlDbType.NVarChar,6));            com1.Parameters.Add(new SqlParameter("@InstituteName", SqlDbType.NVarChar, 40));            com1.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));            com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue;            com1.Parameters["@InstituteNO"].Value = t_NO.Text;            com1.Parameters["@InstituteName"].Value = t_name.Text;            try            {                com1.ExecuteScalar();            }            catch(SqlException ee)            {                DB.msgbox("操作失败!"+ee.Message.ToString());                return;            }            finally            {                com1.Connection.Close();            }            string temp = com1.Parameters["@return"].Value.ToString();            //返回0表示数据操作成功            //返回1表示编号有重复               //返回2表示数据操作错误             //返回3表示提交的数据有空值            switch (temp)            {                case "0":                    DB.msgbox("添加成功!");                    break;                case "1":                    DB.msgbox("编号有重复!");                    break;                case "2":                    DB.msgbox("数据操作错误!");                    break;                case "3":                    DB.msgbox("提交的数据有空值!");                    break;            }            Binding(); //刷新datagrid

转载于:https://www.cnblogs.com/tuyile006/archive/2007/01/04/611491.html

相关资源:C#调用存储过程详解(带返回值、参数输入输出等)

最新回复(0)