可以先修改一个表再修改另外一个表
定义一个事务,如果第二个出现错误就将第一个回滚
我也刚开始学习,下面是我们练习时候写的代码,不知道对你有没有用
int js_id = 0;
SqlConnection conn = DBHelper.GetConn();
conn.Open();
SqlTransaction tran = conn.BeginTransaction();//事务处理的对象
string sql = "INSERT INTO JS(JS_MC,JS_BZ) VALUES(@JS_MC,@JS_BZ) SELECT @@IDENTITY";
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.Transaction = tran;//command中的命令将会受事务对象管理的
= sql;
SqlParameter para = new SqlParameter("@JS_MC", boJS.JS_MC);
command.Parameters.Add(para);
para = new SqlParameter("@JS_BZ", boJS.JS_BZ);
command.Parameters.Add(para);
try
{
js_id = Convert.ToInt32(command.ExecuteScalar());
command.Parameters.Clear();//执行之后要清理一下参数
sql = "INSERT INTO JSMK(JS_ID,MK_ID) VALUES(@JS_ID,@MK_ID) SELECT @@IDENTITY";
= sql;
para = new SqlParameter("@JS_ID",js_id);
command.Parameters.Add(para);
para = new SqlParameter();
para.ParameterName = "@MK_ID";
command.Parameters.Add(para);
foreach (int mk_id in _listMK_id)
{
command.Parameters["@MK_ID"].Value = mk_id;
command.ExecuteNonQuery();
}
();//提交事务
}
catch (Exception)
{
tran.Rollback();//回滚事务
throw;
}
finally
{
conn.Close();
}
return js_id;