public static bool ExecuteTransaction(ArrayList cmdList)
{
Database db = DatabaseFactory.CreateDatabase();
bool rtn = false;
using (DbConnection con = db.CreateConnection())
{
con.Open();
DbTransaction trans = con.BeginTransaction();
try
{
int count = 0;
count = cmdList.Count;
DbCommand cmd;
for (int i = 0; i < count; i++)
{
cmd = (DbCommand)cmdList[i];
if (cmd != null)
db.ExecuteNonQuery(cmd, trans);
}
trans.Commit();
rtn = true;
}
catch
{
trans.Rollback();
rtn = false;
}
con.Close();
}
return rtn;
}
//执行命令
ArrayList cmdList = new ArrayList();
//删除PurchaseOrder
cmdList.Add(DbHelper.GetDbCommand(this.pageId, SQL002, param));
//执行事物
bool ret = DbHelper.ExecuteTransaction(cmdList);
public static DbCommand GetDbCommand(string pageId, string sqlId, ArrayList parmsList)
{
if (pageId == null || pageId.Length == 0) throw new ArgumentNullException("pageId");
if (sqlId == null || sqlId.Length == 0) throw new ArgumentNullException("sqlId");
if (parmsList == null || parmsList.Count == 0) throw new ArgumentNullException("parmsList");
Database db = DatabaseFactory.CreateDatabase();
string sqlString;
//函数开始Log
try
{
sqlString = XmlProcedure.BuildSqlString(pageId, sqlId);
if (sqlString == null || sqlString.Length == 0)
return null;
DbCommand dbCommand = db.GetSqlStringCommand(sqlString);
ArrayList xmlParmsList = new ArrayList();
if (!XmlProcedure.BuildSqlParms(pageId, sqlId, parmsList, ref xmlParmsList))
{
return null;
}
foreach (XmlParameter xmlPara in xmlParmsList)
{
db.AddInParameter(dbCommand, xmlPara.ParamName, xmlPara.ParamType, xmlPara.ParamValue);
}
//函数结束Log
return dbCommand;
}
catch (Exception ex)
{
throw (ex);
}
}
public static string BuildSqlString(string pageId, string sqlId)
{
XmlDocument xDoc = new XmlDocument();
string path = "";
//
string sqlnode = "";
//
string sqlString = "";
path = xmlpath + pageId + ".xml";
sqlnode = "/DataFactory/" + sqlId + "/Sql";
try
{
if (!File.Exists(path))
return null;
xDoc.Load(path);
XmlNode child = xDoc.SelectSingleNode(sqlnode);
if (child != null)
{
XmlNodeReader nr = new XmlNodeReader(child);
while (nr.Read())
{
if (nr.NodeType == XmlNodeType.CDATA)
{
sqlString = nr.Value;
}
}
}
}
catch { }
return sqlString;
}
public static bool BuildSqlParms(string pageId, string sqlId, ArrayList parmsList, ref ArrayList xmlParmsList)
{
XmlDocument xDoc = new XmlDocument();
string path = "";
string parmnode = "";
path = xmlpath + pageId + ".xml";
parmnode = "/DataFactory/" + sqlId + "/Parameters";
try
{
xDoc.Load(path);
XmlNode child = xDoc.SelectSingleNode(parmnode);
if (child != null)
{
XmlNodeReader reader = new XmlNodeReader(child);
int index = 0;
while (reader.Read())
{
reader.MoveToContent();
if (reader.HasAttributes)
{
string sqlName1 = "";
DbType dbType = new DbType();
int length = 0;
string direction;
for (int i = 0; i < reader.AttributeCount; i++)
{
reader.MoveToAttribute(i);
switch (reader.Name)
{
case "SqlName":
sqlName1 = reader.Value;
break;
case "type":
dbType = ConvertDbType(Convert.ToString(reader.Value));
break;
case "length":
length = Convert.ToInt32(reader.Value);
break;
case "direction":
direction = reader.Value;
break;
}
}
xmlParmsList.Add(new XmlParameter(sqlName1, dbType, parmsList[index]));
//Return the reader to the book element.
reader.MoveToElement();
index = index + 1;
}
}
}
else
{
//
return false;
}
}
catch { }
return true;
}