private static void DoTransMain(string sDbConn, ArrayList aQuery, ArrayList aPara)
{
using (SqlConnection objConn = new SqlConnection(sDbConn))
{
SqlTransaction myTrans = null;
SqlCommand objCmd = null;
try
{
objConn.Open();
myTrans = objConn.BeginTransaction();
objCmd = new SqlCommand("", objConn);
objCmd.Transaction = myTrans;
if (aPara == null||aPara.Count==0)
foreach (object obj in aQuery)
{
PrepareCommand(objCmd, (string)obj, null);
objCmd.ExecuteNonQuery();
}
else
{
object objItem = aPara[0];
System.Type typeItem = objItem.GetType();
if (typeItem == typeof(Hashtable))
//call the overload version of PrepareCommand( string, Hastable) ;
for (int i = 0; i < aQuery.Count; i++)
{
PrepareCommand(objCmd, (string)aQuery[i], ConvertHashTabletoSqlParameterArray((Hashtable)aPara[i]));
objCmd.ExecuteNonQuery();
}
else if (typeItem == typeof(SqlParameter[]))
//call the overload version of PrepareCommand(stirng, sqlparameter[] ) ;
for (int i = 0; i < aQuery.Count; i++)
{
PrepareCommand(objCmd, (string)aQuery[i], (SqlParameter[])aPara[i]);
objCmd.ExecuteNonQuery();
}
else
throw new Exception("ArrayList 里包含非法的内容(不是Hashtable 或 SqlParameter数组)");
}
myTrans.Commit();
} //end try
catch (System.Exception e)
{
try
{
myTrans.Rollback();
}
catch (Exception e1)
{
SetErrorTrace("DotransWithParaList(Rollback Trans Error) " + objCmd.CommandText + " " + e1.Message);
}
SetErrorTrace("DotransWithParaList(Commit Trans Error) " + objCmd.CommandText + " " + e.Message);
throw (e);
}// end catch
}//end using
}
