/// <summary>
/// 不同服务器上数据库的事务操作
/// </summary>
/// <param name="alCon">数据库连接字符串集</param>
/// <param name="alSql">sql语句集,同一服务器的数据库sql语句合并为一条处理</param>
/// <returns>返回是否执行成功1表示成功,-1表示失败</returns>
public override int ExcuteTransactions(ArrayList alCon, ArrayList alSql)
{
int iFlag = 1; //用于返回是否执行成功
ArrayList alTran = new ArrayList();
ArrayList alCons = new ArrayList();
try
{
for (int i = 0; i < alCon.Count; i++)
{
SqlConnection sqlCon = new SqlConnection(alCon[i].ToString());
SqlCommand sqlCom = new SqlCommand();
sqlCom.Connection = sqlCon;
//打开数据库
sqlCon.Open();
//创建事务
SqlTransaction tranNew = sqlCon.BeginTransaction();
//临时保存数据,以便事务回滚
alCons.Add(sqlCon);
alTran.Add(tranNew);
sqlCom.Transaction = tranNew;
sqlCom.CommandText = alSql[i].ToString();
int j = sqlCom.ExecuteNonQuery();
}
foreach (SqlTransaction tran in alTran)
{
tran.Commit();
}
}
catch (Exception ex)
{
iFlag = -1;
//事务回滚
foreach (SqlTransaction tran in alTran)
{
tran.Rollback();
}
}
finally
{
foreach (SqlConnection con in alCons)
{
con.Close();
}
}
return iFlag;
}