C#使用SQLite
文章目录
涉及框架及库
自己在NuGet管理器里面安装即可
- Chloe.SQLite:ORM框架
- Microsoft.Data.Sqlite.Core:驱动
- SQLitePCLRaw.bundle_e_sqlcipher:SQLite加密扩展
复制runtimes
主要复制两个dll:e_sqlite3.dll
与e_sqlcipher.dll
复制到项目根目录下,保持原有的结构,删除不使用的平台即可,设置属性为如果较新则复制
dll文件查找位置主要是自己的nuget缓存目录中
或者自己去NuGet下载:SQLitePCLRaw.lib.e_sqlite3
和SQLitePCLRaw.lib.e_sqlcipher
然后用压缩软件打开即可获取到dll文件
创建加密SQLite文件
生成连接字串
使用SqliteConnectionStringBuilder
类,我们可以便捷的构建数据库连接字符串。
csharp
SqliteConnectionStringBuilder sqliteConnectionStringBuilder = new SqliteConnectionStringBuilder();
sqliteConnectionStringBuilder.DataSource = "tanovo.db";
sqliteConnectionStringBuilder.Password = "123456";
sqliteConnectionStringBuilder.Mode = SqliteOpenMode.ReadWriteCreate;
SQLiteConnectionString = sqliteConnectionStringBuilder.ToString();
后续想在项目任何地方使用数据库,只需要使用
csharp
using var db = App.sqlite;
获取数据库上下文对象即可。
执行SQL生成表
如果不至少生成一个表在库中的话,则生成的数据库文件是非加密的,可能只有数据库有数据时,数据库才是加密类型的。
csharp
using var db = App.sqlite;
db.Session.ExecuteNonQuery(@"
CREATE TABLE IF NOT EXISTS test_table
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
update_time TEXT,
cteate_time TEXT
);");
SQLiteConnectionFactory.cs
提供一下这个工厂类,方便伸手党直接复制了
csharp
using Chloe.Infrastructure;
using Microsoft.Data.Sqlite;
using System.Data;
namespace TestSqliteC.DatabaseHelper
{
public class SQLiteConnectionFactory : IDbConnectionFactory
{
string _connString = null;
public SQLiteConnectionFactory(string connString)
{
this._connString = connString;
}
public IDbConnection CreateConnection()
{
IDbConnection conn = new SqliteConnection(this._connString);
return conn;
}
}
}
代码结构
因为我是WPF程序,所以在App构造函数中对SQLite就进行初始化操作了。
最后
这里还推荐三个开源项目,一个是嵌入式的NoSQL数据库,一个是文件存储引擎,都是同一个人开发的,项目也很不错!
最后一个是SQLiteStudio,可以打开并浏览SQLite加密数据库文件,提供图形化界面,可以管理数据库文件。