private void FillResultNode(XmlNode resultNode, DbAccessCommand dbCommand, DbExcuteType exeType) { object result = null; switch (exeType) { case DbExcuteType.ExecuteNonQuery: result = this.DbCommand.ExecuteNonQuery(); break; case DbExcuteType.ExecuteReader: result = this.DbCommand.ExecuteDataSet(); break; case DbExcuteType.ExecuteScalar: result = this.DbCommand.ExecuteScalar(); break; case DbExcuteType.ExecuteXmlReader: { XmlDocument tempDoc = new XmlDocument(); tempDoc.Load(this.DbCommand.ExecuteXmlReader()); result = tempDoc.DocumentElement; break; } case DbExcuteType.ExecuteSchemaTable: result = this.DbCommand.ExecuteSchemaTable(); break; case DbExcuteType.ExecuteDataTable: result = this.DbCommand.ExecuteDataTable(); break; case DbExcuteType.ExecuteDataRow: result = this.DbCommand.ExecuteDataRow().Table; break; case DbExcuteType.ExecuteTableSchema: result = this.DbCommand.ExecuteTableSchema(); break; case DbExcuteType.ExecuteDataSet: result = this.DbCommand.ExecuteDataSet(); break; case DbExcuteType.ExecuteSetSchema: result = this.DbCommand.ExecuteSetSchema(); break; } if (result is XmlNode) { XmlHelper.AddNode(resultNode, result as XmlNode); } else if (result != null) { XmlHelper.AddNode(resultNode, SerializeHelper.XmlSerialize(result)); } }
public XmlDocument ExecuteXml(XmlNode input) { XmlNodeList accessNodes = input.SelectNodes("DbAccessInformation"); DbExcuteType[] exeTypes = new DbExcuteType[accessNodes.Count]; DbAccessInformation[] accessInfos = new DbAccessInformation[accessNodes.Count]; int i = 0; int j = accessNodes.Count; while (i < j) { XmlNode accessNode = accessNodes[i].CloneNode(true); DbExcuteType exeType = (DbExcuteType)DataConvert.ParseEnum(XmlHelper.GetAttributeValue(accessNode, "excuteType"), DbExcuteType.ExecuteNonQuery); DbAccessInformation accessInfo = SerializeHelper.XmlDeserialize(accessNode, typeof(DbAccessInformation)) as DbAccessInformation; exeTypes[i] = exeType; accessInfos[i] = accessInfo; i++; } XmlDocument doc = XmlHelper.CreateXmlDocument("ActionItems", null); bool needOpen = this.DbCommand.Connection.State != ConnectionState.Open; if (needOpen) { this.DbCommand.Open(); } bool isFailed = true; try { this.InnerExecuteXml(doc, this.DbCommand, exeTypes, accessInfos); isFailed = false; } finally { if (isFailed && (this.DbCommand.Transaction != null)) { this.DbCommand.RollbackTransaction(); } if (needOpen || isFailed) { this.DbCommand.Close(); } } return(doc); }