开始的时候想用那个批量导入工具,但是后来发现这个批量导入适用于那种第一次导入的情况,假如再次进行操作而且当前数据库中已经有一些数据则不再合适!
然后我就尝试创建了存储过程,这应该也可以很大程度上提高读写数据库的操作效率!
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();
}