我也很疑惑,有时 执行成功 有时失败,而且不报错。 OPERATIONFLAG 和WORKNO 都是NVarchar ID number 类型
List sqlList = new List();
sqlList.Add("update ASN_ORDER_HEADS set OPERATIONFLAG = '' where OPERATIONFLAG in (select WORKNO from ORDERS_REFORM_HEADS where ID = '" + OrderId + "') ");//大多情况执行成功
sqlList.Add("update SO_ORDER_HEADS set OPERATIONFLAG = '' where OPERATIONFLAG in (select WORKNO from ORDERS_REFORM_HEADS where ID = '" + OrderId + "') ");//大多情况执行成功
sqlList.Add("delete from ORDERS_REFORM_DETAILS where ORDERS_REFORM_HEADID = '" + OrderId + "'");//这条每次 都执行成功
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static int ExecuteSqlTran(System.Collections.Generic.List<String> SQLStringList)
{
int ret = 0;
using (SqlConnection p_Conn = new SqlConnection(CONN_STRING_NON_DTC))
{
p_Conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = p_Conn;
SqlTransaction tx = p_Conn.BeginTransaction();
cmd.Transaction = tx;
try
{
foreach (string sql in SQLStringList)
{
if (!String.IsNullOrEmpty(sql))
{
cmd.CommandText = sql;
ret += cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (Exception E)
{
tx.Rollback();
//throw new Exception(E.Message);
ret = 0;
}
finally
{
if (p_Conn.State != ConnectionState.Closed)
{
p_Conn.Close();
}
}
return ret;
}
}