C#中使用带返回值的存储过程
在向数据库添加新数据时,需要检测是否有重复
本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。
例如在向数据库添加新数据时,需要检测是否有重复
本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。
存储过程如下:
本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。
存储过程如下:
1
CREATE PROCEDURE DInstitute_Insert2
@InstituteNO nvarchar(6),@InstituteName nvarchar(40)3
AS4
declare @return int,@count int5
if(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='')6
select @return=3--返回3表示提交的数据有空值7
else8
begin9
select @count=count(1) from DInstitute where InstituteNO=@InstituteNO10
if(@count>0)11
select @return=1--返回1表示编号有重复12
else13
begin 14
insert into DInstitute (InstituteNO,InstituteName) values (@InstituteNO,@InstituteName) 15
if(@@error>0)16
select @return=2--返回2表示数据操作错误17
else18
select @return=0--返回0表示数据操作成功19
end20
end21
return @return22
GO其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。
在C#中调用本存储过程的代码如下:
在C#中调用本存储过程的代码如下:
1
//执行插入操作2
SqlCommand com1 = new SqlCommand("DInstitute_Insert", DBcon);3
if (com1.Connection.State == ConnectionState.Closed)4
com1.Connection.Open();5
com1.CommandType = CommandType.StoredProcedure;6
com1.Parameters.Add(new SqlParameter("@InstituteNO",SqlDbType.NVarChar,6));7
com1.Parameters.Add(new SqlParameter("@InstituteName", SqlDbType.NVarChar, 40));8
com1.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));9
com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue;10
com1.Parameters["@InstituteNO"].Value = t_NO.Text;11
com1.Parameters["@InstituteName"].Value = t_name.Text;12
try13

{14
com1.ExecuteScalar();15
}16
catch(SqlException ee)17

{18
DB.msgbox("操作失败!"+ee.Message.ToString());19
return;20
}21
finally22

{23
com1.Connection.Close();24
}25
string temp = com1.Parameters["@return"].Value.ToString();26
//返回0表示数据操作成功27
//返回1表示编号有重复 28
//返回2表示数据操作错误 29
//返回3表示提交的数据有空值30
switch (temp)31

{32
case "0":33
DB.msgbox("添加成功!");34
break;35
case "1":36
DB.msgbox("编号有重复!");37
break;38
case "2":39
DB.msgbox("数据操作错误!");40
break;41
case "3":42
DB.msgbox("提交的数据有空值!");43
break;44
}45
Binding(); //刷新datagrid2007-01-10 14:22 by PASS [未注册用户]
return 只能返回int型
可以用output参数
可以用output参数
浙公网安备 33010602011771号