在存儲過程中使用事務
-
直接將數據裏端事務編寫到存儲過程中
-
應用程序直接調用帶有事務的存儲過程
當需要同時執行多條SQL更新語句時
-
使用ADO.NET專用的事務處理對象
-
編寫通用的數據訪問方法
ADO.NET中使用事務
C#中所編寫的所有的事務都是通過SQL代碼進行的編輯,但是在C#環境中所有的SQL代碼都是字符串
public static int UpdateByTran(List<string> sqlList)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
try
{
//開啓數據庫連接
con.Open();
//開始執行事務
cmd.Transaction = con.BeginTransaction();
int result = 0;
//遍歷事務中的每一條SQL修改代碼,保證遍歷到的每一條SQL代碼都會執行成功,纔會執行到Commit,SQL語句中只要有一條SQL代碼拋異常則都會進入Catch中
foreach (string sql in sqlList)
{
cmd.CommandText = sql;
//對每條SQL代碼的執行結果進行接收
result+=cmd.ExecuteNonQuery();
}
cmd.Transaction.Commit();//提交事務
return result;
}
catch (Exception ex)
{
if (cmd.Transaction!=null)
{
cmd.Transaction.Rollback();
}
//throw new Exception("調用事務更新方法時出現異常!"+ex.Message) ;
return -1;
}
finally
{
if (cmd.Transaction!=null)
{
cmd.Transaction = null;
}
con.Close();
}
}