sqlite-net:推荐一个.NET版本简单、强大、跨平台的 SQL...
我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,
我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,领取.Net学习资料!
对于Sqlite很多人不了解,其实SQLite 是全球最流行、部署量最大的数据库引擎,其普及程度远超大多数人的认知。
而且SQLite 是轻量级、无服务器、零配置的嵌入式关系型数据库引擎。
开发桌面软件、App应用,基本都会使用到。
下面推荐一个Sqlite ORM开源库,方便我们开发。
01
项目简介
sqlite-net 是一个轻量级、简单且功能强大的跨平台 SQLite 客户端和 ORM(对象关系映射)库,专为 .NET 平台设计。
是一个快速便捷的数据库层,它的设计遵循以下目标:
非常容易与现有项目集成,并且可以在所有 .NET 平台上运行。这是一个对 SQLite 的轻量级封装,速度快、效率高。非常简单的方法,可以安全地执行 CRUD 操作和查询(使用参数),并以强类型的方式检索这些查询的结果。它能与您的数据模型兼容,无需您修改类。02
跨平台支持
.NET Framework / .NET Core / .NET 5+Xamarin.iOS / Xamarin.AndroidMAUIUWPUnityAzure Functions 等支持所有主流 .NET 平台。03
核心功能
1、轻量 ORM
通过简单的特性(Attributes)定义表结构,例如
public Stock {
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Symbol { get; set; }
[Ignore] // 不映射到数据库
public string IgnoreField { get; set; }
}支持主键、自增、索引([Indexed])、忽略字段等。2、同步 & 异步 API
同步 API:适用于控制台应用、后台服务等。
var db = new SQLiteConnection(dbPath);
db.CreateTable();
db.Insert(new Stock { Symbol = "AAPL" });异步 API:基于 Task,适合移动或 UI 应用,避免阻塞主线程。
var db = new SQLiteAsyncConnection(dbPath);
await db.CreateTableAsync();
await db.InsertAsync(stock);3、SQL语句灵活查询
db.Execute ("create table Stock(Symbol varchar(100) not null)");
db.Execute ("insert into Stock(Symbol) values (?)", "MSFT");
var stocks = db.Query ("select * from Stock");4、支持 SQLCipher(加密数据库)
简单加密:
var options = new SQLiteConnectionString(databasePath, true,
key: "password");
var encryptedDb = new SQLiteAsyncConnection(options);特定安全参数
var options2 = new SQLiteConnectionString(
databasePath, // 数据库文件路径(例如:"/data/encrypted.db")
true, // 是否将 DateTime 类型存储为整数(ticks)而非文本;true 表示使用 ticks
key: "password", // SQLCipher 加密密钥 —— 所有数据将使用此密码进行 AES-256 加密/解密
// ⚠️ 实际项目中应避免硬编码密码,建议从安全渠道动态获取
// 在设置加密密钥 *之前* 执行的自定义操作(用于配置 SQLCipher 兼容性或安全策略)
preKeyAction: db => db.Execute("PRAGMA cipher_default_use_hmac = OFF;"),
// 上述 PRAGMA 禁用 HMAC(消息认证码)校验。
// 通常仅用于兼容旧版 SQLCipher(v3 或更早)创建的数据库。
// ⚠️ 关闭 HMAC 会降低安全性(无法检测数据篡改),新项目应保持默认开启(ON)。
// 在设置加密密钥 *之后* 执行的自定义操作
postKeyAction: db => db.Execute("PRAGMA kdf_iter = 128000;")
// 设置密钥派生函数(KDF)的迭代次数为 128,000。
// 迭代次数越高,暴力破解难度越大,但数据库打开速度略慢。
// SQLCipher v4+ 默认值为 256,000;此处设为 128,000 可能出于性能或兼容性考虑。
);04
项目地址
https://github.com/praeclarum/sqlite-net
- End -