首页 > 数据库 >C# WPF中使用SqLite-net数据库

C# WPF中使用SqLite-net数据库

时间:2023-01-05 14:56:58浏览次数:39  
标签:SqLite string C# 数据库 db reader WPF public cn

在研究安卓手机与pc电脑使用数据线进行数据传输的过程中(为啥这么二,因为甲方人员不允许使用互联网,就算是内部的局域网wifi都不可以),涉及到了WPF操作安卓常用数据库SqlLite的操作,记录一下艰辛的历程。直接使用sqLite官方的dll进行二次开发,首先在官网中SqLite官网中下载sqlite-netFx20-setup-x86-2005-1.0.111.0.exe (我用的是这个,看你的环境具体选择),然后点击安装。

安装完成后,在你的WPF应用中添加对System.Data.SQLite.dll的引用,这个dll所在位置,就是在你安装的目录bin文件夹下,我的目录是在 D:\Program Files\System.Data.SQLite\2005\bin 下,然后再引用中找到这个应用,设置他的属性复制本地为true。导出手机端app的testDb.db文件,这个数据库中只有一个表,叫做usermodel,具体的字段如下图所示,在程序内新建一个实体,UserEntity对应这个表。

 接下来我们开始创建这个db文件的连接,读取数据库中的内容。

                    
 
            SQLiteConnection cn = null;
            List<UserEntity> userEntities = new List<UserEntity>();
            try
            {
                string path = strPCFilePath + "\\" + dbName;
                //创建一个sqllite连接
                cn = new SQLiteConnection("data source=" + path);
                if (cn.State != System.Data.ConnectionState.Open)
                {
                    cn.Open();
                    SQLiteCommand cmd = cn.CreateCommand();
                    cmd.CommandText = "select * from usermodel";
 
                    SQLiteDataReader reader = cmd.ExecuteReader();
 
                    while (reader.Read())
                    {
                        UserEntity entity = new UserEntity();
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                            switch (i)
                            {
                                case 0:
                                    entity.Id = int.Parse(reader[i].ToString());
                                    break;
                                case 1:
                                    entity.Email = reader[i] as string;
                                    break;
                                case 2:
                                    entity.Password = reader[i] as string;
                                    break;
                                case 3:
                                    entity.Username = reader[i] as string;
                                    break;
 
                            }
                        }
                        userEntities.Add(entity);
                    }
                    reader.Close();
                }
 
            }
            catch (Exception ex)
            {
                m_log.Error("MainWindow->analysisData()" + ex.Message);
            }
            finally
            {
                if (cn != null)
                    cn.Close();
            }

注:在链接数据库中出现了‘无法加载DLL‘SQLite.Interop.dll’’的错误,首先先将这个SQLite.Interop.dll拷贝到你的输出目录下,然后打开你WPF项目的属性,在Build页签下,去掉 首选32位  的勾选框。使用SQLite.Net-PCL ORM框架进行数据库操作,在你的NuGet查找SQLite.Net-PCL,选择sqlite-net-pcl然后安装,如下图所示

安装完成后,新建数据库实体,这里是UserModel,

    [Table("usermodel")]
    public class UserModel
    {
        [PrimaryKey, AutoIncrement]
 
        public int Id { get; set; }
 
        public string Email { get; set; }
 
        public string Password { get; set; }
 
        public string Username { get; set; }
    }

 然后创建一个数据库连接,继承自SQLiteConnection类

    public class AndroidDb : SQLiteConnection
    {
        //定义属性,便于外部访问数据表
        public TableQuery<UserModel> Users { get { return this.Table<UserModel>(); } }
         
       //这个path就是db文件所在位置
        public AndroidDb(string dbPath) : base(dbPath)
        {
            //创建数据表
            CreateTable<UserModel>();
        }
    }

接下来使用就非常简单了,增删改的代码如下,都是直接操作对象

            string path = strPCFilePath + "\\" + dbName;//数据库所在路径
            //使用SQLite.Net-PCL访问数据库
            using (var db = new AndroidDb(path))
            {
                //db.Users.Intersect
                //db.Update
                //db.Users.Delete
                List<UserModel> users = db.Users.Where(m => true).ToList();
 
                string s = "";
            }

 

标签:SqLite,string,C#,数据库,db,reader,WPF,public,cn
From: https://www.cnblogs.com/guangzhiruijie/p/17027522.html

相关文章

  • linux crontab 定时任务详解
    前言正如闹钟对于日常生活的重要性一样,linuxcrontab定时任务在开发中是必不可少的工具,诸如:每六个月清理一次日志,每天凌晨12.00重启服务等多种场景,都可以用crontab......
  • 用python得知 cron表达式-执行时间
    #!/user/bin/python3#-*-coding:utf-8-*-#@Author:zhaoruixiao#@Datetime:2023/1/514:30#@Software:PyCharm#@File:cron.py"""workfor$用python得......
  • react 收集表单数据 react-hook-form
    importReactfrom'react'importReactDOMfrom'react-dom'import{useForm}from'react-hook-form'functionApp(){const{register,handleSubmit,error......
  • Oracle nfs集中备份替代NBU
    配置NFShttps://www.linuxprobe.com/basic-learning-12.htmlORACLE各节点挂载nfsmount -tnfs4-ominorversion=1,rsize=1048576,wsize=1048576,hard,timeo=600,retr......
  • navicat-过期
    navicat永久激活码最新?navicat是微软旗下的一款数据库管理软件,功能非常的强大。很多小伙伴们都在电脑上安装了navicat,但是navicat还需要激活才能使用,然而购买还是比较贵的......
  • IDEA集成tomcat
    上面创建了web项目,但是这个项目跟tomcat服务器是没有任何关系的,我们来给他加上本地集成:在webapp目录下面创建一个html文件:配置config注意访问路径,配置好是下面这......
  • Huawei USG6000V IP-MAC绑定配置
    IP-MAC绑定配置解释今天拿虚拟机装了下USG6000V2发现这个IP-MAC绑定功能开启并静态绑定后,没有静态绑定的主机还是可以上网,跟自己预想效果的不一样,于是我开始在网上查找相......
  • 一步一步学爬虫(4)数据存储之CSV文件存储
    (一步一步学爬虫(4)数据存储之CSV文件存储)4.3CSV文件存储CSV,全称Comma-SeparatedValues,中文叫做逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。CSV文件是一个......
  • 一款.NET下的性能超高的SQLite操作库
    SQLite 已经成为小型数据库的王者,成为构建桌面程序、小型 Web 应用等必不可少的工具。给广大 .NETer 推荐一款.NET下的 SQLite 包装库 SQLite-net,非常好用,性能也......
  • ​ 美国亚马逊带绳窗帘产品ANSI/WCMA A100.1-2018新标准测试
     美国消费品安全委员会(CPSC)于2022年11月2日通过了一项新的联邦安全标准。该标准适用于定制窗帘的操作绳,目的是降低带绳窗帘导致儿童窒息死亡和严重危及生命的伤害的风险。......