Example #1
0
        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));
            }
        }
Example #2
0
        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);
        }