目录
一、需求
作为本地客户端,对于单用户单并发的情况,有时候我们需要将数据存储到本地,而不是存储到云端,所以这时候选择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中,并在程序启动时自动根据系统架构加载他们。