首页 > 数据库 >SQLiteManager 第二部分

SQLiteManager 第二部分

时间:2023-05-14 10:55:12浏览次数:42  
标签:---------------- queryString string SQLiteManager 第二 tableName values null 部分

// 一些常用的查询方法(其实如果熟悉SQL的话,直接用ExecuteQuery更方便)

// 这部分直接复制到SQLiteManager类里面就可以

// SQLite没有逻辑型,一般用0/1表示

// 在比照文本型时,别忘了手动给string参数值加上单引号

        public List<TableColInfo> GetTableColInfos(string tableName)
        {
            if (!IsTableExist(tableName))
                return null;
            // ---------------- ---------------- ----------------
            string queryString = "PRAGMA table_info(" + tableName + ")";
            ExecuteQuery(queryString);
            List<TableColInfo> returnCols = new List<TableColInfo>();
            while (reader.Read())
            {
                SQLiteDataType type = SQLiteDataType.BLOB;
                if (reader["type"].ToString() == "INTEGER")
                    type = SQLiteDataType.INTEGER;
                else if (reader["type"].ToString() == "REAL")
                    type = SQLiteDataType.REAL;
                else if (reader["type"].ToString() == "TEXT")
                    type = SQLiteDataType.TEXT;
                // ---------------- ---------------- ----------------
                TableColInfo newCol = new TableColInfo(reader["name"].ToString(), type);

                if (reader[3] != null && reader.GetBoolean(3))
                    newCol.isNOTNULL = true;

                if (string.IsNullOrEmpty(reader[4].ToString()))
                    newCol.dflt_value = reader[4].ToString();

                if (reader[5] != null && reader.GetBoolean(5))
                    newCol.isPK = true;

                returnCols.Add(newCol);
            }
            reader.Close();
            return returnCols;
        }
        public List<TableColInfo> GetColInfosFromMonoScript(Type type)
        {
            List<TableColInfo> returnColInfos = new List<TableColInfo>();
            FieldInfo[] fields = type.GetFields();
            foreach (FieldInfo field in fields)
            {
                SerializeToTableCol att = field.GetCustomAttribute<SerializeToTableCol>();
                if (att != null)
                    returnColInfos.Add(new TableColInfo(att.name, att.type, att.isNOTNULL, att.dflt_value, att.isPK));
            }
            return returnColInfos;
        }
        // ==================== ==================== ==================== ====================
        public int GetTableRows(string tableName)
        {
            string queryString = "SELECT count(*) FROM " + tableName;
            ExecuteQuery(queryString);

            if (!reader.HasRows) { reader.Close(); return 0; }

            reader.Read();
            int returnInt = reader.GetInt32(0);
            reader.Close();
            return returnInt;
        }
        public void GetAllRecords(string tableName)
        {
            string queryString = "SELECT * FROM " + tableName;
            ExecuteQuery(queryString);
        }

        public void GetRecordsByValue(string tableName, string colName, string value)
        {
            TableColInfo colInfoOfColName = null;
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            foreach (var colInfo in colInfos)
            {
                if (colInfo.name == colName)
                { colInfoOfColName = colInfo; break; }
            }
            if (colInfoOfColName == null)
            { return; }
            // ---------------- ---------------- ----------------
            string queryString = $"SELECT * FROM {tableName} WHERE {colName} = value";
            ExecuteQuery(queryString);
        }
        public void GetRecordsByValueList(string tableName, string colName, List<string> values)
        {
            if (values == null | values.Count == 0)
            { return; }
            // ---------------- ---------------- ----------------
            TableColInfo colInfoOfColName = null;
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            foreach (var colInfo in colInfos)
            {
                if (colInfo.name == colName)
                { colInfoOfColName = colInfo; break; }
            }
            if (colInfoOfColName == null)
            { return; }
            // ---------------- ---------------- ----------------
            StringBuilder queryString = new StringBuilder($"SELECT * FROM {tableName} WHERE {colName} = IN ({values[0]}");
            values.RemoveAt(0);
            foreach (var value in values)
            {
                queryString.Append($" ,{value}");
            }
            queryString.Append(")");
            ExecuteQuery(queryString.ToString());
        }
        public void GetRowIDByValue(string tableName, string colName, string value)
        {
            TableColInfo colInfoOfColName = null;
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            foreach (var colInfo in colInfos)
            {
                if (colInfo.name == colName)
                { colInfoOfColName = colInfo; break; }
            }
            if (colInfoOfColName == null)
            { return; }
            // ---------------- ---------------- ----------------
            string queryString = $"SELECT rowid FROM {tableName} WHERE {colName} = value";
            ExecuteQuery(queryString);
        }
        public void AddRecord(string tableName, List<string> values)
        {
            if (values == null | values.Count == 0)
            { return; }
            // ---------------- ---------------- ----------------
            StringBuilder querySB = new StringBuilder(values[0]);
            foreach (var value in values)
            { querySB.Append($" ,{value}"); }
            querySB.Insert(0, $"INSERT INTO {tableName} VALUES (").Append(")");

            try
            { ExecuteQuery(querySB.ToString()); }
            catch (Exception)
            { }
        }
        public void UpDateRecord(string tableName, List<string> values, int rowID)
        {
            if (values == null | values.Count == 0)
            { return; }
            // ---------------- ---------------- ----------------
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            StringBuilder querySB = new StringBuilder($"{colInfos[0].name} = {values[0]}");
            for (int n = 1; n < colInfos.Count - 1; n++)
            {
                querySB.Append($" ,{colInfos[n].name} = {values[n]}");
            }
            querySB.Append($" WHERE roeid = {rowID}");
            try
            { ExecuteQuery(querySB.ToString()); }
            catch (Exception)
            { }
        }

        public void DeleteRecordsByValue(string tableName, string colName, string value)
        {
            TableColInfo colInfoOfColName = null;
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            foreach (var colInfo in colInfos)
            {
                if (colInfo.name == colName)
                { colInfoOfColName = colInfo; break; }
            }
            if (colInfoOfColName == null)
            { return; }
            // ---------------- ---------------- ----------------
            string queryString = $"DELETE FROM {tableName} WHERE {colName} = value";
            try
            { ExecuteQuery(queryString); }
            catch (Exception)
            { }
        }
        public void DeleteRecordsByValueList(string tableName, string colName, List<string> values)
        {
            if (values == null | values.Count == 0)
            { return; }
            // ---------------- ---------------- ----------------
            TableColInfo colInfoOfColName = null;
            List<TableColInfo> colInfos = GetTableColInfos(tableName);
            foreach (var colInfo in colInfos)
            {
                if (colInfo.name == colName)
                { colInfoOfColName = colInfo; break; }
            }
            if (colInfoOfColName == null)
            { return; }
            // ---------------- ---------------- ----------------
            StringBuilder queryString = new StringBuilder($"DELETE FROM {tableName} WHERE {colName} =  IN ({values[0]}");
            values.RemoveAt(0);
            foreach (var value in values)
            {
                queryString.Append($" ,{value}");
            }
            queryString.Append(")");
            try
            { ExecuteQuery(queryString.ToString()); }
            catch (Exception)
            { }
        }

 

标签:----------------,queryString,string,SQLiteManager,第二,tableName,values,null,部分
From: https://www.cnblogs.com/xhbnfcl/p/17393062.html

相关文章

  • 打卡第二十二天
    求出100~200之间的全部素数,每行输出8个数,每个数宽度为5列一、1.运用for循环语句进行除于判断是否为零二、三、#include<stdio.h>intmain(void){ inti,k,m=0; intflag; for(i=100;i<200;i++){ flag=1; for(k=2;k<i&&flag==1;k++){ if(i%......
  • 第二次博客:PTA题目集4-5总结
    第二次博客:PTA题目集4-5总结 前言:有了前三次的菜单系列的洗礼,我对这两次的点菜还是有一定的信心的。老师也说期中考试会于点菜系列有一定的联系。但是事实告诉你永远不要试图揣测蔡老师的心思。先说期中考试:题目概述:总共4题,(和点菜没有半毛钱关系)不过总体来说......
  • 第二篇C刊记录——反转识别
    1基本情况题目:基于动态主题聚类的网络舆情反转识别模型构建与实证研究录用期刊:情报理论与实践撰写周期:15days审稿周期:2months2写作经过(1)思路来源:OB给的题目,确实好写噢。原始思路是找多个案例;对案例文本反转前聚个类,反转后聚个类,在不断添加中发现区别;在反转瞬间之前提前......
  • 第二次冲刺 02
    今日进行站立会议,主要是对于下一步的进行做出规划要求。如何优化整个项目的进程进行分析。昨天写错地方了。。。。 ......
  • 连续拉丝机程序,拉丝机自动控制程序,解决了大部分拉丝机经常出现的拉力不均匀,电机转速不
    连续拉丝机程序,拉丝机自动控制程序,解决了大部分拉丝机经常出现的拉力不均匀,电机转速不稳等问题,运行稳定,安全可靠。ID:64500621136236802......
  • 《无垠的太空(7).波斯波利斯崛起》地下Zu织成立3完结(第二十一章:霍顿)
    第二十一章:霍顿    扩展阅读《无垠的太空(7).波斯波利斯崛起》速读:https://www.cnblogs.com/rockyching2009/p/16790702.html《无垠的太空(7).波斯波利斯崛起》合集:https://www.cnblogs.com/rockyching2009/category/2238049.html《无垠的太空(9).利维坦陨落》全集:htt......
  • Python学习之四_部分battery的学习
    Python学习之四_部分battery的学习CentOS升级pip的方法yuminstallpython3之后,一般centos的版本都很低,有时候很多module是无法安装的.一般可以通过他进行升级:pip3install-Upip注意如果无法升级,可以先这样处理mkdir-p/root/.config/pip/cat>/root/.c......
  • icad2000的源代码 国内的大部分CAD厂家都是基于这个做的。 类似中望cad
    icad2000的源代码国内的大部分CAD厂家都是基于这个做的。类似中望cad的2005版本的20000。YID:695000556515785853......
  • 每天打卡一小时 第二十六天
    接昨天的题#include<iostream>usingnamespacestd;template<classT>classNode{private:Node<T>*next;public:Tdata;Node(constT&data,Node<T>*next=0);Node(constNode<T>&p);~Node();......
  • c++打卡第二十四天
    一、亲密数1、问题描述 2、设计思路①、我们可以设计函数计算一个数的因子,将这些因子相加到一起,返回和并对这个返回值重新调用求因子函数,如果这个函数返回值为A,那么这两个数为亲密数,打印出AB。②、求因子可以对A进行2~A的遍历,同时c除余d,如果余数为0,那么d就是c的因子。3、流......