总算能贴代码了

这篇博客介绍了如何使用C#解析XML文件中的SQL语句,并将数据结构化为SqlData结构。同时,展示了如何基于这个结构创建MySqlCommand对象,进行参数化查询。
摘要由CSDN通过智能技术生成

public class Class1
    {
        public struct SqlData
        {
            public String sqlStatement;
            public String[] sqlParamKey;
            public String[] sqlParamType;
        }

        private Hashtable htSqlStatementData = null;

        public Hashtable SqlStatementData
        {
            get
            {
                return htSqlStatementData;
            }
        }

        public Class1()
        {
            htSqlStatementData = new Hashtable();
            getXmlSql();
        }

        private void getXmlSql()
        {
            try
            {
                XmlDocument dom = new XmlDocument();
                dom.Load("SqlStatement.xml");

                XmlNodeList nodeListSql = dom.GetElementsByTagName("SQL");

                if (nodeListSql == null)
                {
                    return;
                }

                for (int i = 0; i < nodeListSql.Count; i++)
                {
                    XmlNode sqlNode = nodeListSql[i];
                    String sqlId = sqlNode.Attributes["ID"].Value;
                    int paramCount = 0;
                    int.TryParse(sqlNode.Attributes["PARAMCOUNT"].Value, out paramCount);

                    SqlData sqlData = new SqlData();
                    sqlData.sqlParamKey = new string[paramCount];
                    sqlData.sqlParamType = new string[paramCount];

                    XmlNodeList nodeListSqlDetails =  sqlNode.ChildNodes;

                    if (nodeListSql == null)
                    {
                        continue;
                    }

                    int paramIndex = 0;

                    for (int j = 0; j < nodeListSqlDetails.Count; j++)
                    {
                        XmlNode sqlNodeDetail = nodeListSqlDetails[j];
                        if ("STATMENT".Equals(sqlNodeDetail.Name))
                        {
                            XmlNode textNode = sqlNodeDetail.FirstChild;
                            sqlData.sqlStatement = textNode.Value;
                            continue;
                        }

                        if ("PARAMENT".Equals(sqlNodeDetail.Name))
                        {
                            if (sqlData.sqlParamKey.Length <= paramIndex)
                            {
                                break;
                            }
                            sqlData.sqlParamKey[paramIndex] = sqlNodeDetail.Attributes["ID"].Value;
                            sqlData.sqlParamType[paramIndex] = sqlNodeDetail.Attributes["TYPE"].Value;

                        }
                    }
                    htSqlStatementData.Add(sqlId, sqlData);
                }

            }
            catch
            {
            }
           
        }

        public MySqlCommand getMySqlCommand(MySqlConnection con, string strCommandId, Hashtable htParam)
        {
            MySqlCommand command = con.CreateCommand();

            Object objHashData = htSqlStatementData[strCommandId];
            if (objHashData == null)
            {
                return null;
            }
            SqlData sqlData = (SqlData)objHashData;
           

            command.CommandText = sqlData.sqlStatement;

            if (sqlData.sqlParamKey == null || sqlData.sqlParamKey.Length == 0)
            {
                return command;
            }

            for (int i = 0; i < sqlData.sqlParamKey.Length; i++)
            {
                MySqlParameter param = new MySqlParameter();
                param.ParameterName = sqlData.sqlParamKey[i];
                param.MySqlDbType = (MySqlDbType)Enum.Parse(typeof(MySqlDbType), sqlData.sqlParamType[i], true);
                param.Value = htParam[sqlData.sqlParamKey[i]];
            }
            return command;
        }
    }

数据结构中的排序算法性能对比主要取决于以下几个方面: 1. **稳定性**:排序算法是否保持相等元素的原有顺序,如冒泡排序和插入排序是稳定的,而快速排序和堆排序通常是不稳定的。 2. **时间复杂度**: - **最好情况**:某些排序算法在输入已经有序的情况下表现最好,如插入排序、二分查找等,它们的时间复杂度可以达到O(n)或更低。 - **平均情况**:例如归并排序和快速排序通常有O(n log n)的时间复杂度,这是大多数常用排序算法的典型复杂度。 - **最坏情况**:快速排序在最坏情况下(如输入完全逆序)时间复杂度为O(n^2),但可以通过随机化选择枢轴元素来降低概率。 - 堆排序、希尔排序和冒泡排序在最坏情况下也是O(n^2)。 3. **空间复杂度**:一些原地排序(如冒泡排序、插入排序和选择排序)空间复杂度为O(1),而归并排序和计数排序等需要额外空间存储,空间复杂度可能为O(n)。 4. **适用场景**:对于小规模数据,简单的排序算法(如插入排序、选择排序)可能更合适。大规模数据时,考虑到性能瓶颈,归并排序、快速排序、堆排序等可能会优先考虑。 5. **稳定性需求**:如果需要保持相等元素的相对顺序,那么稳定排序算法更适合。 相关问题-- 1. 描述一下时间复杂度在排序算法性能评估中的重要性。 2. 除了时间复杂度,还有哪些因素影响排序算法的选择? 3. 在大数据量处理中,什么类型的排序算法更常见?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值