设计logo网站生成器,建设银行企业网站失败,wordpress 什么是插件,网络运营主要工作内容SQLite是一种流行的开源关系型数据库#xff0c;它的设计目标是提供轻量级、高效、可靠和易用的数据存储服务。由于SQLite无需单独的服务器进程#xff0c;它通常被用于嵌入式系统和单机应用程序中#xff0c;也可以用于网络应用程序的辅助数据库。 今天给大家推荐一个.NET开…SQLite是一种流行的开源关系型数据库它的设计目标是提供轻量级、高效、可靠和易用的数据存储服务。由于SQLite无需单独的服务器进程它通常被用于嵌入式系统和单机应用程序中也可以用于网络应用程序的辅助数据库。 今天给大家推荐一个.NET开发的 SQLite ORM库SQLite-net非常好用性能也很棒
关于 SQLite-net SQLite-net 是一个快速、便捷的数据库层。它的设计遵循以下目标
非常易于与现有项目集成并且可以在所有 .NET 平台上运行。快速高效对SQLite没有任何性能上的影响参数化执行CRUD 操作和查询从而无需担心 SQL 注入等安全问题。SQLite-net 使用一个小型反射驱动的 ORM 层所以无需对当前使用的实体类进行任何重大更改。
安装SQLite-net
.NET CLI方式
dotnet add package sqlite-net-pclPackage Manager方式
Install-Package sqlite-net-pcl定义实体类
public class User
{[PrimaryKey, AutoIncrement]public int Id { get; set; }public string Name { get; set; }
}SQLite-net 提供两种 API 来执行数据库操作同步 API 和异步 API。同步 API 会阻塞当前线程直到数据库操作完成。异步 API 不会阻塞当前线程而是允许线程继续执行其他任务直到数据库操作完成。
同步API使用
// Get an absolute path to the database file
var databasePath Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), MyData.db);var db new SQLiteConnection(databasePath);
db.CreateTableUser();上面代码可以创建在数据库中自动创建表User。
添加、更新和删除
using (var db new SQLiteConnection(MyData.db)) {// 添加var user new User { Name 张三 };db.Insert(user);// 读取var users db.TableUser().ToList();// 更新var userToUpdate db.GetUser(1); userToUpdate.Name 张三222;db.Update(userToUpdate);// 删除var userToDelete db.GetUser(2); db.Delete(userToDelete);
}使用SQL 执行命令和查询
db.Execute (insert into User(Name) values (?), 李四);
var user_model db.QueryUser (select * from User where Id?,3);异步API使用 与同步API使用类似
using (var db new SQLiteConnection(MyData.db)) {//创建表await db.CreateTableAsyncUser();// 添加await db.InsertAsync(new User { Name 张三 });// 查询var users await db.TableUser().ToListAsync();// 更新var userToUpdate await db.GetAsyncUser(1); userToUpdate.Name 张三222;await db.UpdateAsync(userToUpdate);// 删除var userToDelete await db.GetAsyncUser(2); await db.DeleteAsync(userToDelete);
}加密支持
加密一直是 SQLite 的一个重要问题数据库加密在一定程度上可以保护数据防止其他人直接访问数据库。SQLite-net 可以通过 sqlite-net-sqlcipher加密数据库
sqlite-net-sqlcipher包安装
.NET CLI方式
dotnet add package sqlite-net-sqlcipherPackage Manager方式
Install-Package sqlite-net-sqlcipher安装完成后在连接数据库的时候 密码需要在传递给连接构造函数时设置。
var options new SQLiteConnectionString(databasePath, true,key: password);
var encryptedDb new SQLiteAsyncConnection(options);如果需要设置加密 pragma可以将操作传递给连接字符串。
var options2 new SQLiteConnectionString (databasePath, true,key: password,preKeyAction: db db.Execute(PRAGMA cipher_default_use_hmac OFF;),postKeyAction: db db.Execute (PRAGMA kdf_iter 128000;));
var encryptedDb2 new SQLiteAsyncConnection (options2);sqlite-net代码地址https://github.com/praeclarum/sqlite-net