Microsoft.Data.Sqlite + SQLitePCLRaw 实现 SQLite 加密的完整 WinForms 示例
一、安装 NuGet 包
通过“程序包管理器控制台”执行下面代码安装相关包
Install-Package Microsoft.Data.Sqlite
Install-Package SQLitePCLRaw.bundle_e_sqlcipher
二、添加窗口控件和添加代码
1. EncryptedDb.cs文件
/// <summary>
/// SQLite 加密数据库操作类
/// </summary>
public static class EncryptedDb
{
// 数据库文件路径(自动创建在程序根目录)
public static readonly string DbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "encrypted.db");
// 初始化 SQLitePCL 加密支持
static EncryptedDb()
{
SQLitePCL.Batteries_V2.Init(); // 必须初始化加密组件
}
/// <summary>
/// 创建加密数据库连接
/// </summary>
/// <param name="password">数据库密码</param>
public static SqliteConnection CreateConnection(string password)
{
var connStr = new SqliteConnectionStringBuilder
{
DataSource = DbPath,
Mode = SqliteOpenMode.ReadWriteCreate,
Password = password // 设置密码
}.ToString();
Console.WriteLine($"数据库连接字符串:{
connStr}");
return new SqliteConnection(connStr);
}
/// <summary>
/// 验证密码是否正确
/// </summary>
public static bool VerifyPassword(string password)
{
try
{
using (var conn = CreateConnection(password))
{
conn.Open(); // 密码错误会抛出异常
return true;
}
}
catch
{
return false;
}
}
/// <summary>
/// 修改数据库密码
/// </summary>