我只是想知道,如果有任何技术可以将值插入sql Server 2008数据库中的多个表中吗?
我有以下
cmd.CommandText = "Insert into tb1 (col1, col2, col3) values (@col1, @col2, @col3); Insert into tb2 (col1, col2, col3) values (@col11, @col12, @col13);";
cmd.Parameters.AddWithValue("col1","val1");
cmd.Parameters.AddWithValue("col2", "val2");
cmd.Parameters.AddWithValue("col3", "val3");
cmd.Parameters.AddWithValue("col11","val4"); cmd.Parameters.AddWithValue("col12", "val5");
cmd.Parameters.AddWithValue("col13", "val6");
但即使“插入到tb2 ...”部分出现错误,也会将值插入“tb1”? 如果是的话那就不是我想要的了。 我想要的是,如果tb2部分出错,则不应将值插入到tb1中。
请帮帮我。
答案 0 :(得分:1)
您应该将代码包装到事务中:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// Begin the transaction
tran = cnn.BeginTransaction();
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Transaction = tran;
try
{
//place your current code here with multiple cmd.ExecuteNonQuery
// Commit the transaction ....
tran.Commit();
}
catch(Exception e)
{
tran.Rollback();
}
}
答案 1 :(得分:0)
使用交易
using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
sqlConn.Open();
using (SqlTransaction sqlTrans = sqlConn.BeginTransaction())
{
// ... insert 1
// ... insert 2
sqlTrans.Commit();
}
}