【C#桌面客户端系列学习-10】连接SQLite数据库

目录

一、需求

二、安装教程

1、安装SQLite驱动

2、创建数据库

3、连接数据库

三、将客户端打包

1、安装Fody.Costura

2、打包SQLite.Interop.dll动态库

(1)准备DLL文件

(2)设置生成操作

(3)修改配置文件


一、需求

作为本地客户端,对于单用户单并发的情况,有时候我们需要将数据存储到本地,而不是存储到云端,所以这时候选择SQLite数据库作为本地数据库是最好的选择,他不需要考虑平台是x86还是x64,也不需要什么组件,很方便。

二、安装教程

1、安装SQLite驱动

在VS2022中,右键项目->管理NuGet程序包,搜索并安装"System.Data.SQLite.Core",安装和就可以直接使用了。

2、创建数据库

可以使用Navicat创建数据库。先在项目根目录下创建一个空的文件(因为SQLite不会自动创建数据库文件,所以需要手动先创建),并命名c_test.db,我这里存放的路径是\test\Resources\c_test.db,test是项目根目录。

由于SQLite连接时不需要用户名和密码的,只需要选择刚才创建好的c_test.db,连接即可。打开后会有一个名叫main的数据库,将需要创建的数据表在main下创建即可。

3、连接数据库

可以在app.config里配置,也可以在操作数据库的代码里写。

下面是在代码里写。

cs 复制代码
private static readonly string connectionString =
    "Data Source=" + System.IO.Path.Combine(Application.StartupPath, "c_test.db") + ";Version=3;";

至此,就可以连接SQLite数据库了。

三、将客户端打包

将客户端打包成exe,只分发给客户一个独立的exe文件就行,不需要把所有的文件包依赖包之类的再一块都给客户了。

1、安装Fody.Costura

Fody.Costura它的主要功能就是可以单独把生成的exe拿出来,可以直接运行,比如把bin/Debug/下的1.exe,放到任何一个位置或分发给任何一个人,只需要给这个exe就可以了,不需要再把完整的文件夹给别人。

在VS2022中,右键项目->管理NuGet程序包,搜索并安装"Fody.Costura",安装和就可以直接使用了。

2、打包SQLite.Interop.dll动态库

SQLite.Interop.dll 是 System.Data.SQLite 的核心组件。可以把它理解为:托管代码(C#)只是"壳",真正的 SQLite 数据库引擎(C语言写的)全在这个 DLL 里。

(1)准备DLL文件

在项目\bin\debud\下新建两个文件夹,分别为costura-win-x64和costura-win-x86,找到\bin\debug\下的x64和x86文件夹,把里面对应的SQLite.Interop.dll分别复制到costura-win-x64和costura-win-x86(32位的放进costura-win-x86,64位的放进costura-win-x64)。

(2)设置生成操作

在资源管理器找到"显示所有文件"图标,点击显示所有文件,就会看到刚刚存放的两个文件。分别设置他们的属性,复制到输出目录:始终复制,生成操作:嵌入的资源。

(3)修改配置文件

打开项目根目录下的FodyWeavers.xml文件,填写下面的代码

XML 复制代码
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
    <Costura>
	  <Unmanaged32Assemblies>
		SQLite.Interop
	  </Unmanaged32Assemblies>
	  <Unmanaged64Assemblies>
		SQLite.Interop
	  </Unmanaged64Assemblies>
	</Costura>
</Weavers>

至此,就把两个本机的SQLite.Interop.dll作为资源嵌入到主exe中,并在程序启动时自动根据系统架构加载他们。

相关推荐
Rabitebla16 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
Decay__17 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
java_logo17 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
rockey62718 小时前
AScript之LINQ扩展
c#·.net·script·动态脚本
凤凰院凶涛QAQ18 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
码农小河6618 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
张小姐的猫18 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
这个DBA有点耶1 天前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie1 天前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署