我在项目中写入数据库的时候,需要向多个数据表中同时写入相关数据,
问题是,我担心,第一个语句可以执行,第二个发生错误了,不执行报错了。
数据库中的数据就会出现不符合的情况,因为这些数据都是有关联的。如何使得这些SQL语句,要么一起成功执行,要么一个都不执行,直接报错。请高手给点意见。
问题是,我担心,第一个语句可以执行,第二个发生错误了,不执行报错了。
数据库中的数据就会出现不符合的情况,因为这些数据都是有关联的。如何使得这些SQL语句,要么一起成功执行,要么一个都不执行,直接报错。请高手给点意见。
SqlTransaction tran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Transaction = tran;
try
{ ... }
catch
{
tran.Rollback();//回滚
}
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection=conn;
SqlTransaction tx=conn.BeginTransaction();
cmd.Transaction=tx;
try
{
for(int n=0;n<SQLStringList.Count;n++)
{
string strsql=SQLStringList[n].ToString();
if (strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch(System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}