如果必须同时插的话,建议你使用一个临时表。 在存储过程中先将数据整理的临时表中。假设临时表名叫temp,目标表名叫 result。
最后执行 insert into result select * from temp;
就可以讲 temp表中的数据 一次入到 目标表中了。
在存储过程中写两个INSERT 就可以了
create proc up_insert
as
begin
insert into test valuse(1);
insert into test values(2);
end;
///
/// 执行多条SQL语句,实现数据库事务。
///
/// SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])
public static void ExecuteSqlTran(Hashtable SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
SqlCommand cmd = new SqlCommand();
try
{
//循环
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText=myDE.Key.ToString();
SqlParameter[] cmdParms=(SqlParameter[])myDE.Value;
PrepareCommand(cmd,conn,trans,cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
trans.Commit();
}
}
catch
{
trans.Rollback();
throw;
}
}
}
}
eg:
Hashtable SQLStringList = new Hashtable();
//循环开始
string cmdText = "insert into userinfo (username,userpwd)values(@username,@userpwd) ";
SqlParameter[] cmdParms = new SqlParameter[2];
cmdParms[0] = new SqlParameter( "@username ", "name ");
cmdParms[1] = new SqlParameter( "@userpwd ", "pwd ");
....
SQLStringList.Add(cmdText, cmdParms);
//循环结束
ExecuteSqlTran(SQLStringList);