コード例 #1
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        /// <summary>
        /// 为标准的返回XML结构创建错误信息节点并赋值
        /// </summary>
        /// <param name="strNodeName">节点名称</param>
        /// <param name="strResult">节点值</param>
        /// <returns>Boolean true成功,false失败</returns>
        public Boolean setErrorNodeChild(String strNodeName, String strResult)
        {
            try
            {
                if (!createErrorInfoNode())
                {
                    throw new Exception("ReturnDoc.setErrorNodeChild.创建返回节点时发生错误");
                }

                XmlNode nod_Temp = m_doc_Self.SelectSingleNode(Common.XDOC_ROOT + Common.BAR + Common.XDOC_ERRORINFO);

                if (nod_Temp == null)
                {
                    throw new Exception("ReturnDoc.setErrorNodeChild.获取错误根节点时发生错误");
                }

                XmlNode nod_Child = m_doc_Self.SelectSingleNode(
                    Common.XDOC_ROOT + Common.BAR +
                    Common.XDOC_ERRORINFO + Common.BAR + strNodeName);

                if (nod_Child == null)
                {
                    XmlFun.CreateDocNode(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_ERRORINFO, strNodeName, strResult);
                }
                else
                {
                    nod_Child.InnerText = strResult;
                }
                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #2
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        public static string OrgReturnNode(string subNodeName, string sNodeName, OleDbDataReader rst)
        {
            XmlDocument doc    = XmlFun.CreateNewDoc("<" + subNodeName + "/>");
            XmlElement  el_row = null;
            XmlElement  elem   = null;

            while (rst.Read()) // 循环获取记录集的值
            {
                el_row = doc.CreateElement(sNodeName);

                for (int i = 0; i < rst.FieldCount; i++)
                {
                    string strFieldName = rst.GetName(i).ToUpper();
                    string sValue       = rst[i].ToString();

                    elem           = doc.CreateElement(strFieldName);
                    elem.InnerText = sValue;

                    el_row.AppendChild(elem);
                }
                doc.DocumentElement.AppendChild(el_row);
            }

            el_row = null;
            elem   = null;
            return(doc.InnerXml);
        }
コード例 #3
0
        /// <summary>
        /// 获得字典条目列表
        /// </summary>
        /// <param name="Request"></param>
        /// <param name="Response"></param>
        /// <returns></returns>
        public string QryDicDataList(HttpRequest Request, HttpResponse Response)
        {
            string strXML     = Request["txtXML"];
            string strDicName = XmlFun.getNodeValue(strXML, "//QUERYCONDITION/@dicname");

            return(Dic.dicDataList(strXML, strDicName));
        }
コード例 #4
0
        /// <summary>
        /// 获得解析好的T-SQL查询Where语句
        /// </summary>
        /// <returns>解析好的T-SQL查询Where语句</returns>
        public string getConditions()
        {
            XmlElement ele_Conditions = XmlFun.getElement(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_QUERYCONDITION);

            if (ele_Conditions == null)
            {
                return(null);
            }
            return(parseConditions(ele_Conditions));
        }
コード例 #5
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        /// <summary>
        /// 将查询返回的结果集拼装成需要的 XML 的结构
        /// </summary>
        /// <param name="rst">返回的结果集</param>
        /// <param name="strListName">QUERY 子节点下的节点名称</param>
        /// <returns>是否成功</returns>
        public Boolean getQueryInfo(OleDbDataReader rst, string strListName)
        {
            string listXml = OrgReturnNode(Common.XDOC_QUERYINFO, strListName, rst);

            if (XmlFun.setNodeDOM(this.m_doc_Self, Common.XDOC_ROOT, listXml))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #6
0
        /// <summary>
        /// 将标准的添加操作XmlElement对象转化为T-SQL语句
        /// </summary>
        /// <param name="eleSQL">业务操作型 XmlElement 对象</param>
        /// <returns>T-SQL语句</returns>
        private static string parseInsert(XmlElement eleSQL)
        {
            XmlNodeList it_Temp = eleSQL.ChildNodes;

            string str_FieldList = "";           /// 字段列表
            string str_ValueList = "";           /// 字段值列表
            string str_TableName = eleSQL.Name;  /// 表名

            for (int k = 0; k < it_Temp.Count; k++)
            {
                XmlNode ele_Field = it_Temp[k];

                String str_State      = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_STATE);
                String str_FieldName  = ele_Field.Name;
                String str_FieldValue = ele_Field.InnerText;

                if (General.empty(str_State))
                {
                    continue;
                }

                if (str_State.Equals(Common.ST_NORMAL))
                {
                    str_FieldList += str_FieldName + Common.COMMA;

                    string str_DataType = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_DATATYPE);

                    if (General.empty(str_DataType))
                    {
                        continue;
                    }

                    int int_DataType = Convert.ToInt32(str_DataType);

                    str_ValueList += General.converType(int_DataType, str_FieldValue, str_FieldName) + Common.COMMA;
                } /// if(str_State.equals(Common.DT_STRING))
            }     /// for~~~~~~~

            if (General.empty(str_FieldList))
            {
                return(null);
            }

            return(Common.INSERT + str_TableName + Common.SPACE +
                   General.addBracket(str_FieldList.Substring(0, str_FieldList.Length - 1)) +
                   Common.S_VALUES +
                   General.addBracket(str_ValueList.Substring(0, str_ValueList.Length - 1)));
        }
コード例 #7
0
        public static string test()
        {
            try
            {
                string      strXML = "<root><a></a></root>";
                XmlDocument doc    = XmlFun.CreateNewDoc(strXML);

                setAttributeValue(doc, "//a", "sv", "1");
                CreateDocNode(doc, "root/a", "a1", "heihei");
                return(doc.InnerXml);
            }
            catch (Exception e)
            {
                return(e.Message);
            }
        }
コード例 #8
0
        /// <summary>
        /// 通过传入的 XML 结构,组织返回 Delete 类型的 SQL 语句
        /// </summary>
        /// <param name="eleSQL">业务操作型 XmlElement 对象</param>
        /// <returns>T-SQL语句</returns>
        private static string parseDelete(XmlElement eleSQL)
        {
            XmlNodeList it_Temp = eleSQL.ChildNodes;

            string str_WhereList = "";          /// 条件列表
            string str_TableName = eleSQL.Name; // 表名

            for (int k = 0; k < it_Temp.Count; k++)
            {
                XmlNode ele_Field = it_Temp[k];

                string str_State      = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_STATE);
                string str_FieldName  = ele_Field.Name;
                string str_FieldValue = ele_Field.InnerText;

                if (General.empty(str_State))
                {
                    continue;
                }

                int int_State = Convert.ToInt32(str_State);

                String str_DataType;
                int    int_DataType;

                switch (int_State)
                {
                case Common.IST_QUERY:
                    str_DataType = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_DATATYPE);
                    int_DataType = General.empty(str_DataType) ? Convert.ToInt32(Common.DT_STRING) : Convert.ToInt32(str_DataType);

                    if (int_DataType != Common.IDT_BINARY)
                    {
                        str_WhereList += str_FieldName + Common.EQUAL + General.converType(int_DataType, str_FieldValue, str_FieldName) + Common.S_AND;
                    } /// if (int_DataType==Common.IDT_BINARY)

                    break;
                } /// switch ~~~~~~~~~~
            }     /// for~~~~~~~~

            if (!General.empty(str_WhereList))
            {
                str_WhereList = Common.S_WHERE + str_WhereList.Substring(0, str_WhereList.Length - 5);
            }

            return(Common.DELETE + str_TableName + str_WhereList);
        }
コード例 #9
0
        /// <summary>
        /// 设置数据节点下指定节点的内容
        /// </summary>
        /// <param name="strNodeName">节点名称</param>
        /// <param name="strValue">待设置的节点内容</param>
        /// <returns>是否设置成功</returns>
        public Boolean setDataValue(string strNodeName, string strValue)
        {
            try
            {
                if (!strNodeName.StartsWith(Common.BAR2))
                {
                    strNodeName = Common.XDOC_ROOT + Common.BAR + Common.XDOC_DATAINFO + Common.BAR + strNodeName;
                }
                XmlFun.setNodeValue(m_doc_Self, strNodeName, strValue);

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #10
0
        /// <summary>
        /// 根据xml初始化构造函数
        /// </summary>
        /// <param name="strXML">查询型的xml字符串</param>
        public QueryDoc(string strXML)
        {
            m_doc_Self = new XmlDocument();
            m_doc_Self.LoadXml(strXML);


            XmlElement ele_Condition = this.getCondition();
            string     str_Return    = XmlFun.getAttributValue(ele_Condition, Common.XML_PROP_RECORDSPERPAGE);
            int        int_PageSize  = str_Return == null ? 10 : Convert.ToInt32(str_Return);

            setIntPageSize(int_PageSize);

            ///  获得当前待查询页码
            str_Return = XmlFun.getAttributValue(ele_Condition, Common.XML_PROP_CURRENTPAGENUM);
            int int_CurrentPage = str_Return == null ? 1 : Convert.ToInt32(str_Return);

            setIntCurrentPage(int_CurrentPage);
        }
コード例 #11
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        /// <summary>
        /// 创建标准XML结构的错误信息跟节点
        /// </summary>
        /// <returns>Boolean true成功,false失败</returns>
        public Boolean createErrorInfoNode()
        {
            try
            {
                XmlNodeList nodeList = m_doc_Self.SelectNodes(Common.XDOC_ROOT + Common.BAR + Common.XDOC_ERRORINFO);

                int int_Size = nodeList.Count;

                if (int_Size == 0)
                {
                    XmlFun.CreateDocNode(m_doc_Self, Common.XDOC_ROOT, Common.XDOC_ERRORINFO);
                }
                return(true);
            }
            catch (Exception e)
            {
            }
            return(false);
        }
コード例 #12
0
        /// <summary>
        /// 统一处理标准的业务操作型XML文档,将文档分析称T-SQL封装到DataStorage类中作为一个事务执行
        /// </summary>
        /// <param name="strXML">标准业务操作型XML文档</param>
        /// <returns>标准 XML 返回文档字符串</returns>
        public static string dealWithXml(string strXML)
        {
            /// 创建执行对象
            DataStorage obj_Storage   = new DataStorage();
            ReturnDoc   obj_ReturnDoc = new ReturnDoc();

            try
            {
                XmlDocument obj_Doc = XmlFun.CreateNewDoc(strXML);
                XmlNodeList nodeLst = obj_Doc.SelectNodes("//*[@operation][@operation!='']");

                for (int i = 0; i < nodeLst.Count; i++)
                {
                    XmlElement ele_Temp = (XmlElement)nodeLst.Item(i);
                    //      创建插入数据的XML
                    string str_SQL = SQLAnalyse.analyseXMLSQL(ele_Temp);

                    obj_Storage.addSQL(str_SQL);
                }

                /// 执行
                string str_Return = obj_Storage.runSQL();


                if (!General.empty(str_Return))
                {
                    obj_ReturnDoc.addErrorResult(Common.RT_FUNCERROR);
                    obj_ReturnDoc.setFuncErrorInfo(str_Return);
                }
                else
                {
                    obj_ReturnDoc.addErrorResult(Common.RT_SUCCESS);
                }
            }
            catch (Exception e)
            {
                obj_ReturnDoc.addErrorResult(Common.RT_FUNCERROR);
                obj_ReturnDoc.setFuncErrorInfo(e.Message);
            }

            return(obj_ReturnDoc.getXml());
        }
コード例 #13
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        public Boolean createQueryInfoNode()
        {
            try
            {
                XmlNode node = XmlFun.getNode(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_QUERYINFO);

                if (node == null)
                {
                    XmlFun.CreateDocNode(m_doc_Self, Common.XDOC_ROOT, Common.XDOC_QUERYINFO, "");
                }

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }

            return(false);
        }
コード例 #14
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
        /// <summary>
        /// 向查询返回数据节点中,添加属性
        ///    *        在本函数中,如果原来已经存在同名节点,则会删除原节点
        ///        例如:<EFSFRAME>
        ///                <QUERYINFO> <--  PropInfo
        ///                 </QUERYINFO>
        ///              </EFSFRAME>
        /// </summary>
        /// <param name="strPropName">属性名称</param>
        /// <param name="strPropValue">属性值</param>
        /// <returns>是否成功</returns>
        public Boolean addPropToQueryInfo(String strPropName, String strPropValue)
        {
            try
            {
                XmlElement ele_Query = XmlFun.getElement(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_QUERYINFO);

                if (ele_Query == null)
                {
                    XmlFun.CreateDocNode(m_doc_Self, Common.XDOC_ROOT, Common.XDOC_QUERYINFO, "");
                }

                ele_Query = XmlFun.getElement(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_QUERYINFO);

                ele_Query.SetAttribute(strPropName, strPropValue);

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #15
0
 /// <summary>
 /// 获得数据节点下指定节点的内容
 /// </summary>
 /// <param name="strNodeName">节点名称</param>
 /// <returns>数据节点下指定节点的内容</returns>
 public string getDataValue(string strNodeName)
 {
     return(XmlFun.getNodeValue(m_doc_Self,
                                Common.XDOC_ROOT + Common.BAR +
                                Common.XDOC_DATAINFO + Common.BAR + strNodeName));
 }
コード例 #16
0
        /// <summary>
        /// 根据 XML 文档解析得到T-SQL查询Where语句
        /// </summary>
        /// <param name="ele">XmlElement节点对象</param>
        /// <returns>解析好的T-SQL查询Where语句</returns>
        private string parseConditions(XmlElement ele)
        {
            XmlNodeList it_Condition  = ele.SelectNodes(Common.BAR2 + Common.XDOC_CONDITION);
            XmlNodeList it_Conditions = ele.SelectNodes(Common.BAR2 + Common.XDOC_CONDITIONS);

            string str_Where = "";
            string str_Type  = "";

            for (int k = 0; k < it_Condition.Count; k++)
            {
                if (k > 0)
                {
                    str_Type = XmlFun.getNodeValue(it_Conditions.Item(k - 1), Common.XDOC_TYPE);
                    str_Type = General.empty(str_Type) ? "" : str_Type.Trim().ToUpper();
                }

                /// 获得查询节点
                if (!General.empty(str_Where))
                {
                    if (General.empty(str_Type))
                    {
                        throw new Exception("QueryDoc.parseConditions.77.未提供类型");
                    }

                    str_Where += Common.SPACE + str_Type + Common.SPACE;
                }

                XmlNode ele_Condition = it_Condition.Item(k);

                string str_Alias    = XmlFun.getAttributValue(ele_Condition, Common.XML_PROP_ALIAS);
                string str_DataType = XmlFun.getAttributValue(ele_Condition, Common.XML_PROP_DATATYPE);
                int    int_DataType = General.empty(str_DataType) ? 0 : Convert.ToInt32(str_DataType);

                string str_FieldName = XmlFun.getNodeValue(ele_Condition, Common.XDOC_FIELDNAME);
                str_FieldName = General.empty(str_Alias) ? str_FieldName : str_Alias + Common.DOT + str_FieldName;

                /// +
                /// 如果是查询出生日期,则获得该字典的 sv 属性,用来确定是否是按照年龄来查询的
                /// 如果是 AGERANGE 则说明是按照年龄来查询
                /// 如果是 空,则说明是按照出生日期来查询
                string str_Sv        = XmlFun.getNodeValue(ele_Condition, Common.XDOC_FIELDNAME + Common.BAR + "@" + Common.XML_PROP_SV);
                string str_Operation = XmlFun.getNodeValue(ele_Condition, Common.XDOC_OPERATION);
                string str_DataValue = XmlFun.getNodeValue(ele_Condition, Common.XDOC_VALUE);

                str_Operation = str_Operation.Trim().ToUpper();

                /// 单独处理日期类型的字段
                if (int_DataType == 3)
                {
                    /// 按年龄来进行查询
                    if (str_Sv.Equals(Common.XML_AGERANGE))
                    {
                        str_Where += General.opYearDate(str_FieldName, str_DataValue, str_Operation);
                    }
                    else
                    {
                        str_Where += General.opDate(str_FieldName, str_DataValue, str_Operation);
                    }
                }
                else
                {
                    if (int_DataType == Common.IDT_BINARY)
                    {
                        throw new Exception("QueryDoc.parseConditions.函数不能处理二进制类型的数据");
                    }

                    if (str_Operation.ToUpper().Equals("NOT IN") || str_Operation.ToUpper().Equals("IS") || str_Operation.ToUpper().Equals("IS NOT"))
                    {
                        str_Where += str_FieldName + Common.SPACE +
                                     str_Operation + Common.SPACE +
                                     str_DataValue;
                    }
                    else
                    {
                        str_Where += str_FieldName + Common.SPACE +
                                     str_Operation + Common.SPACE +
                                     General.converType(int_DataType, str_DataValue, str_FieldName);
                    }
                }
            }

            return(str_Where);
        }
コード例 #17
0
        public static Boolean setNodeValue(string strXML, string nodePath, int i, string sValue)
        {
            XmlDocument doc = XmlFun.CreateNewDoc(strXML);

            return(setNodeValue(doc, nodePath, i, sValue));
        }
コード例 #18
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
 public string getErrorValue(string strNodeName)
 {
     return(XmlFun.getNodeValue(m_doc_Self,
                                Common.XDOC_ROOT + Common.BAR +
                                Common.XDOC_ERRORINFO + Common.BAR + strNodeName));
 }
コード例 #19
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
 public ReturnDoc()
 {
     m_doc_Self = XmlFun.getDefaultDoc();
 }
コード例 #20
0
ファイル: ReturnDoc.cs プロジェクト: shenshunan/EFS
 public XmlNode getQueryInfoNode()
 {
     return(XmlFun.getNode(m_doc_Self,
                           Common.XDOC_ROOT + Common.BAR + Common.XDOC_QUERYINFO));
 }
コード例 #21
0
        public static string getAttributValue(string strXML, string nodePath, int i, string svName)
        {
            XmlDocument doc = XmlFun.CreateNewDoc(strXML);

            return(getAttributValue(doc, nodePath, i, svName));
        }
コード例 #22
0
 /// <summary>
 /// 在文档数据节点下添加一个 SQL 脚本的子节点
 ///        例如:<EFSFRAME>
 ///                <DATAINFO>
 ///                  <SQLSCRIPT operation="5"/>          * 将该节点添加到文档根节点中
 ///                </DATAINFO>
 ///              </EFSFRAME>
 /// </summary>
 /// <param name="strSQL">待插入节点的 SQL 语句</param>
 /// <returns>是否成功</returns>
 public Boolean addSQLScript(string strSQL)
 {
     return(XmlFun.CreateDocNode(m_doc_Self, Common.XDOC_ROOT + Common.BAR + Common.XDOC_DATAINFO, Common.XDOC_SQLSCRIPT, strSQL));
 }
コード例 #23
0
 public DataDoc()
 {
     m_doc_Self = XmlFun.getDefaultDoc();
 }
コード例 #24
0
 public XmlNode getDataNode(string strNodeName, int i)
 {
     return(XmlFun.getNode(m_doc_Self,
                           Common.XDOC_ROOT + Common.BAR +
                           Common.XDOC_DATAINFO + Common.BAR + strNodeName, i));
 }
コード例 #25
0
        /// <summary>
        /// 通过传入的 XML 结构,组织返回 UPDATE 类型的 SQL 语句
        /// </summary>
        /// <param name="eleSQL">业务操作型 XmlElement 对象</param>
        /// <returns>T-SQL语句</returns>
        private static String parseUpdate(XmlElement eleSQL)
        {
            XmlNodeList it_Temp = eleSQL.ChildNodes;

            string str_EditList  = "";          /// 字段值列表
            string str_WhereList = "";          /// 条件列表
            string str_TableName = eleSQL.Name; // 表名

            for (int k = 0; k < it_Temp.Count; k++)
            {
                XmlNode ele_Field = it_Temp[k];

                string str_State      = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_STATE);
                string str_FieldName  = ele_Field.Name;
                string str_FieldValue = ele_Field.InnerText;

                if (General.empty(str_State))
                {
                    continue;
                }

                int    int_State = Convert.ToInt32(str_State);
                string str_DataType;
                int    int_DataType;

                str_DataType = XmlFun.getAttributValue(ele_Field, Common.XML_PROP_DATATYPE);
                int_DataType = General.empty(str_DataType) ? Convert.ToInt32(Common.DT_STRING) : Convert.ToInt32(str_DataType);
                switch (int_State)
                {
                case Common.IST_NORMAL:

                    str_EditList += str_FieldName + Common.EQUAL + General.converType(int_DataType, str_FieldValue, str_FieldName) + Common.COMMA;

                    break;

                case Common.IST_QUERY:
                    if (int_DataType == Common.IDT_BINARY)
                    {
                        throw new Exception("查询字句中不能以二进制流字段类型作为查询字句的内容!");
                    }

                    str_WhereList += str_FieldName + Common.EQUAL + General.converType(int_DataType, str_FieldValue, str_FieldName) + Common.S_AND;

                    break;
                } /// switch (int_State)
            }     /// for~~~~~~~~~~

            if (General.empty(str_EditList))
            {
                return(null);
            }

            if (!General.empty(str_WhereList))
            {
                str_WhereList = Common.S_WHERE + str_WhereList.Substring(0, str_WhereList.Length - 5);
            }

            return(Common.UPDATE + str_TableName +
                   Common.S_SET + str_EditList.Substring(0, str_EditList.Length - 1) +
                   str_WhereList);
        }