Пример #1
0
        /// <summary>
        /// 用value的值进行查询
        /// </summary>
        /// <param name="database">数据库连接用的类,陈剑楠定义</param>
        /// <param name="tableName">表格名</param>
        /// <param name="mappingListLimit">规定Luis返回的type和表头的对应关系,查询的限制条件</param>
        /// <param name="mappingListSelect">规定Luis返回的type和表头的对应关系,查询内容</param>
        /// <return>返回有查询的结果,查询结果与UseDatebase的类型一致</return>
        public List <string[]> QueryByValue(string ConnectString, string tableName, string[] typeForSelect, string[] typeForLimit)
        {
            string          sql;
            List <string[]> result            = new List <string[]>();
            List <string>   tempSelectStr     = new List <string>();
            List <string>   tempFieldNameStr  = new List <string>();
            List <string>   tempFieldValueStr = new List <string>();

            //检索字典中,确定哪些type作为查询内容,哪些为查询条件
            foreach (valueAndType item in valueAndTypeStr)
            {
                foreach (string itemOftypeForSelect in typeForSelect)
                {
                    if (item.type == itemOftypeForSelect)
                    {
                        tempSelectStr.Add(item.value);
                    }
                }
                foreach (string itemOftypeForLimit in typeForLimit)
                {
                    if (item.type == itemOftypeForLimit)
                    {
                        tempFieldNameStr.Add(item.type);
                        tempFieldValueStr.Add(item.value);
                    }
                }
            }
            fieldName   = new string[tempFieldNameStr.Count];
            fieldValue  = new string[tempFieldNameStr.Count];
            selectField = new string[tempSelectStr.Count];
            for (int i = 0; i < tempFieldNameStr.Count; i++)
            {
                fieldName[i]  = tempFieldNameStr[i];
                fieldValue[i] = tempFieldValueStr[i];
            }
            for (int i = 0; i < tempSelectStr.Count; i++)
            {
                selectField[i] = tempSelectStr[i];
            }

            //一直都是全部查询,即每个表头都查询,方便后续处理
            sql = UseDatebase.GenerateQuery(tableName, fieldName, fieldValue, null);
            UseDatebase data = new UseDatebase(ConnectString);

            data.Query(sql);
            result = data.queryResul;
            if (data.queryResul.Count == 0)
            {
                result = null;
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 按照txt中的表头,给对应数据库中的表插入数据。
        /// </summary>
        /// <param name="tableName">数据库中表格的名称</param>
        /// <param name="url">数据文件位置</param>
        /// <param name="data">UseDatebase类</param>
        public static void ImportData(string tableName, string url, UseDatebase data)
        {
            string sql;

            string[] lines     = System.IO.File.ReadAllLines(url);
            int      ColumnNum = (Regex.Matches(lines[0], "\t")).Count;

            string[] subLines  = new string[ColumnNum + 1];//定义用于存储行信息的变量,在循环中使用,中间变量
            string[] fieldName = subLines = lines[0].Split(new char[] { '\t' });
            for (int i = 1; i < lines.Length; i++)
            {
                subLines = lines[i].Split(new char[] { '\t' });//对第i行进行分割,得到sublines数组
                sql      = GenerateInsert(tableName, fieldName, subLines);
                data.InsertDate(sql);
            }
            //Console.WriteLine(ColumnNum.ToString());
        }