C#获取Sqlite数据库指定表的所有信息,添加到缓存字典中。

一、思路如下:先将数据导出到DataTable,然后再放到缓存字典

①编写Sqlite数据库连接帮助类

 public class SqliteHelper
    {

        /// <summary>
        /// 数据库连接定义
        /// </summary>
        public SqliteConnection dbConnection;



        /// <summary>
        /// SQL命令定义
        /// </summary>
        private SqliteCommand dbCommand;



        /// <summary>
        /// 数据读取定义
        /// </summary>
        private SqliteDataReader dataReader;



        /// <summary>
        /// 数据库连接字符串定义
        /// </summary>
        private SqliteConnectionStringBuilder dbConnectionstr;



        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="connectionString">连接Sqlite数据库的路径</param>
        /// <param name="sqliteDatabasePwd">Sqlite数据库密码</param>
        public SqliteHelper(string connectionString, string sqliteDatabasePwd="")
        {

            try
            {

                dbConnection = new SqliteConnection();

                dbConnectionstr = new SqliteConnectionStringBuilder();

                dbConnectionstr.DataSource = connectionString;
                if (!string.IsNullOrEmpty(sqliteDatabasePwd))
                {
                    dbConnectionstr.Password = sqliteDatabasePwd;      //设置密码,SQLite ADO.NET实现了数据库密码保护
                    dbConnection.ConnectionString = dbConnectionstr.ToString();

                    dbConnection.Open();
                }
                else
                {
                    dbConnection.ConnectionString = dbConnectionstr.ToString();

                    dbConnection.Open();
                }
            }
            catch (Exception e)
            {

                Log.Write(GetType() + "连接Sqlite数据库失败!!!,失败信息为:" + e.ToString());

            }

        }
}

②编写具体的加载Sqlite数据库指定表内容到缓存字典中

public class Ctrl_Register
{
        private static Ctrl_Register _Instance;                                 //本类实例
        SqliteHelper sql;                                                       //sqlite帮助类
       const string dbPath = Application.dataPath + "/StreamingAssets/SystemSqliteDataBase/EquipmentMonitoring1.db"         //Sqlite数据库路径(根据自己项目内容改变)


        /// <summary>
        /// 本类实例
        /// </summary>
        /// <returns></returns>
        public static Ctrl_Register GetInstance()
        {
            if (_Instance==null)
            {
                _Instance = new Ctrl_Register();
            }
            return _Instance;
        }


        /// <summary>
        /// 获取到人员性别所有信息
        /// </summary>
        /// <returns></returns>
        public List<Single_PeopleSexData> GetAllPeopleSex()
        {
            List<Single_PeopleSexData> _PeopleSexDatas = new List<Single_PeopleSexData>();

            try
            {
                sql = new SqliteHelper(dbPath);
                string sqlContent = "select * from PeopleSex";
                SqliteDataAdapter sda = new SqliteDataAdapter(sqlContent, sql.dbConnection);
                DataTable dt = new DataTable();
                sda.Fill(dt);
               
                int count = dt.Rows.Count;
                
                for (int i = 0; i < count; i++)
                {
                    Single_PeopleSexData _PeopleSexData = new Single_PeopleSexData();
                    _PeopleSexData.Id = Convert.ToInt32(dt.Rows[i]["ID"]);
                    _PeopleSexData.SexType = Convert.ToString(dt.Rows[i]["SexType"]);
                    _PeopleSexDatas.Add(_PeopleSexData);
                }
            }
            catch (System.Exception e)
            {

                Log.Write(GetType() + "/AddPeopleInfoToSqliteDatabase()/连接数据库失败!");
            }
            finally
            {
                sql.CloseConnection();
            }

            return _PeopleSexDatas;
        }

}

③人员性别封装类

public class Single_PeopleSexData
	{
        private int _Id;
        private string _SexType;

        public int Id
        {
            get
            {
                return _Id;
            }

            set
            {
                _Id = value;
            }
        }

        public string SexType
        {
            get
            {
                return _SexType;
            }

            set
            {
                _SexType = value;
            }
        }

    }//class_end

二、使用方法

        /// <summary>
        /// 获取到所有人员性别信息
        /// </summary>
        private void GetPeopleSexInfo()
        {
            List<Single_PeopleSexData> _PeopleSexDatas;
            _PeopleSexDatas = Ctrl_Register.GetInstance().GetAllPeopleSex();

            foreach (var item in _PeopleSexDatas)
            {
                Debug.Log("ID="+item.Id);
                Debug.Log("SexType=" + item.SexType);
            }
            Debug.Log("查询完毕");
        }

 注意:参考:https://blog.csdn.net/sl1990129/article/details/79559438

                      https://zhidao.baidu.com/question/502914778.html

                    https://blog.csdn.net/u011412226/article/details/51064182

SQLite插入数据效率最快的方式就是:开启事务  +   insert语句  +  关闭事务(提交):https://www.cnblogs.com/zhaoliankun/p/9167219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值