zoukankan      html  css  js  c++  java
  • C#中使用带返回值的存储过程

    2007-01-27 08:37 P.M.

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

    CREATE PROCEDURE DInstitute_Insert
    @InstituteNO nvarchar(6),@InstituteName nvarchar(40)
     AS
    declare @return int,@count int
    if(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='')
     select @return=3--返回3表示提交的数据有空值
    else
    begin
     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表示数据操作成功
     end
    end
    return @return
    GO

    其中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

  • 相关阅读:
    js弹出框、对话框、提示框、弹窗总结
    GIT本地免密配置
    SpringMVC 框架的搭建及基本功能的实现
    win10调用局域网内xp系统上的打印机
    JSP页面之间互相传值
    Spring MVC 框架的架包分析,功能作用,优点
    hibernate_Restrictions用法
    服务器中配置多个Tomcat及内存溢出配置
    破解navicat
    如何重装mysql8及初次修改密码
  • 原文地址:https://www.cnblogs.com/nianshi/p/639442.html
Copyright © 2011-2022 走看看