C#下创建存储过程用于Insert或者Update数据的Demo

开始的时候想用那个批量导入工具,但是后来发现这个批量导入适用于那种第一次导入的情况,假如再次进行操作而且当前数据库中已经有一些数据则不再合适!

然后我就尝试创建了存储过程,这应该也可以很大程度上提高读写数据库的操作效率!

CREATE PROCEDURE InsertORUpdateDLXX @MPH CHAR(50),@QYDM CHAR(50),@RQ DATETIME,@DBH CHAR(20),@QS FLOAT,@ZS FLOAT,@CSDL FLOAT
AS
IF EXISTS(SELECT * FROM DLXXB WHERE MPH = @MPH AND QYDM = @QYDM AND convert(nvarchar(6),RQ,112)=convert(nvarchar(6),@RQ,112))
BEGIN
UPDATE DLXXB SET QS=@QS,ZS=@ZS,CSDL=@CSDL WHERE MPH=@MPH AND QYDM=@QYDM AND convert(nvarchar(6),RQ,112)=convert(nvarchar(6),@RQ,112)
END
ELSE
BEGIN
INSERT INTO dbo.DLXXB
        ( MPH ,
          QYDM ,
          DBH ,
          QS ,
          ZS ,
          CSDL ,
          RQ
        )
VALUES  ( @MPH , -- MPH - varchar(50)
          @QYDM , -- QYDM - varchar(50)
          @DBH , -- DBH - varchar(20)
          @QS , -- QS - float
          @ZS , -- ZS - float
          @CSDL , -- CSDL - float
          @RQ  -- RQ - datetime
        )
        END
        ;

使用C# 调用该存储过程的代码:

static void Main(string[] args)
        {
            //2015-3-11写两个存储过程的测试程序 首先测试电量信息表
            SqlConnection conn = new SqlConnection("server=.;database=cpu_ele_db; User ID=sa;password=afanti");
            try
            {
                conn.Open();
                Console.WriteLine("当前连接状态为:" + conn.State.ToString() + "如果当前状态为Open则可以进行后续的操作");
                SqlCommand cmd_Insert = new SqlCommand("InsertORUpdateDLXX",conn);
                cmd_Insert.CommandType = CommandType.StoredProcedure;
                cmd_Insert.Parameters.Add("@MPH", SqlDbType.Char);
                cmd_Insert.Parameters.Add("@QYDM", SqlDbType.Char);
                cmd_Insert.Parameters.Add("@RQ", SqlDbType.DateTime);
                cmd_Insert.Parameters.Add("@DBH", SqlDbType.Char);
                cmd_Insert.Parameters.Add("@QS", SqlDbType.Float);
                cmd_Insert.Parameters.Add("@ZS", SqlDbType.Float);
                cmd_Insert.Parameters.Add("@CSDL", SqlDbType.Float);
                
                //开始给添加的各个参数进行赋值操作
                cmd_Insert.Parameters["@MPH"].Value = "001030101B";
                cmd_Insert.Parameters["@QYDM"].Value = "S0606S01";
                cmd_Insert.Parameters["@RQ"].Value = "2013-04-21 15:00:00.000";
                cmd_Insert.Parameters["@DBH"].Value = "62001617";
                cmd_Insert.Parameters["@QS"].Value = "1";
                cmd_Insert.Parameters["@ZS"].Value = "2";
                cmd_Insert.Parameters["@CSDL"].Value = "3";

                cmd_Insert.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
            Console.ReadLine();
        }




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值