.NET修仙传
修炼秘籍
.net 修炼路线图
书籍大全
C#入门后该如何进阶?如何提升自己?
读写 Excel 四种方案
书籍大全
dotnet命令大全
C# 程序集加载方法
linux 下部署.net环境
.NET WebAPI中FromRoute、FromQuery、FromBody的关键角色与用法
C# 新用法
盘点C#最有价值的10个语法糖
C#基础语法与数据类型
序列化
C# 7.0
模式匹配Pattern Matching
优秀实用的类库推荐
2024年C#优秀实用的类库推荐
依赖注入与中间件
依赖注入
查询所有已注入的服务
WebApi实现批量注入
原生依赖注入
自动依赖注入框架
优秀中间件
依赖注入
Autofac
生命周期
文档操作
PDF操作
PDF合并及生成书签目录
Excel操作
几个Excel文件合并去重分类
Excel文件之COM组件方式
操作Excel文件之NPOI
INI文件
面试宝典
WebService、WCF、WebAPI、一般处理程序
C# 线程和进程的区别
asp.net core 服务生命周期
asp.net core 的中间件都有哪些
操作系统编程
获取搜狗输入法中英文
com组件集成
执行系统命令
通过句柄嵌入exe窗体程序
windows-开机自启动
程序调用cmd命令生成WCF服务的客户端调用文件
获取电脑信息
键盘记录器
键盘改键功能
监听鼠标操作
框架揭秘
01编程初体验
中间件 Middleware
路由
配置管理
配置系统
配置管理
日志管理
Log4Net
NLog
.net core原始日志记录
日志管理
Serilog
LINQ
LINQ概讲
LINQ编程
常用方法
ORM
EF Core初始化
EF Core的实体类配置
执行原生SQL语句
EF Core
操作sqlite
操作Mysql数据库
操作LiteDB
AutoMapper高效实现对象映射
AutoMapper
AutoMapper 10个常用方法总结
缓存
Redis支持哪几种数据类型?
什么是Redis?简述它的优缺点?
Redis相比memcached有哪些优势?
认证
什么是 JWT?它是如何工作的?
.net framework jwt
.net core Jwt操作
认证管理
.Net WebApi校验Token/参数的几种方式
鉴权授权
Authorization的几种方式
基础语法
集合
1、C#中常用集合类型
yield return 简化迭代并提高代码质量
AOP
.net core AOP
操作筛选器
网络编程
TCP 连接的前世今生
HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 之间的区别
网络编程
WebApi获取客户信息
通信
HTTP通信
公共类-HttpHelper
多线程编程
十种线程方式分析
Task-筑基期
parallel-筑基
消息队列
Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?
构建高性能 API 的高级技术
优秀教程网站
每日学习地址
全套教程汇总
理解ASP.NET Core
定时任务
定时器的三种使用方式
定时任务之windows任务计划程序
创建任务到Windows任务计划程序
定时任务之Quartz.Net
IHostedService启动时运行定时任务
JSON序列化反序列化工具
前辈
发布部署
应用部署
GRPC
使用GRPC多个proto文件
本文档使用 MrDoc 发布
-
+
首页
操作LiteDB
LiteDB 是一个轻量、快速、嵌入式的 NoSQL 数据库。它不需要服务器,适用于桌面、移动应用以及小型 Web API 项目,本人在一些小项目中比较喜欢使用。本文将介绍 LiteDB 的主要特点以及如何在 C# 中使用 LiteDB,通过完整的例子展示常见的数据库操作。 # LiteDB 主要特点 - **无需服务器**:LiteDB 运行于单一 DLL 中,不需要复杂的服务器配置。 - **轻量级**:数据库文件小巧,适用于资源受限的环境。 - **嵌入式**:LiteDB 直接嵌入到应用程序中。 - **NoSQL**:基于 BSON(二进制 JSON 序列化协议)存储数据。 - **简单易用**:通过简单的 API 实现 CRUD 操作。 - **支持LINQ**:方便的数据查询与操作支持。 >Install-Package LiteDB # 操作LiteDB 我们将通过一个简单的 C# 控制台应用展示如何使用 LiteDB 实现基本的 CRUD(创建、读取、更新、删除)操作。 ## 1. 创建实体类 ```java public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } ``` ## 2. 插入数据 插入数据是基本的数据库操作,我们首先创建 LiteDatabase 实例,然后获取集合并插入数据。 ```java private void btnInsert_Click(object sender, EventArgs e) { // 连接数据库(若文件不存在会自动创建) using (var db = new LiteDatabase(@"MyData.db")) { // 获取 User 集合(若不存在会自动创建) var users = db.GetCollection<User>("users"); // 创建新的 User 对象并插入集合 var user = new User { Name = "John Doe", Email = "johndoe@example.com" }; users.Insert(user); Console.WriteLine("User inserted with Id: " + user.Id); } } ``` ## 3. 查询数据 LiteDB 提供了简单的查询接口,可以使用 LINQ 查询或通过 BsonExpression 指定查询条件。 ```java private void btnSearch_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 查询单个用户 var user = users.FindById(1); if (user != null) { Console.WriteLine($"User found: {user.Name}, {user.Email}"); } // 使用 LINQ 查询所有用户 var allUsers = users.FindAll().ToList(); foreach (var u in allUsers) { MessageBox.Show($"User: {u.Name}, {u.Email}"); } } } ``` ## 4. 更新数据 可以根据 Id 或其他条件查找并更新现有的记录。 ```java private void btnUpdate_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 查找用户并更新 var user = users.FindById(1); if (user != null) { user.Email = "john.doe@newdomain.com"; users.Update(user); MessageBox.Show("User updated"); } } } ``` ## 5. 删除数据 可以根据 Id 或其他条件删除记录。 ```java private void btnDelete_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 删除用户 bool success = users.Delete(1); if (success) { MessageBox.Show("User deleted"); } } } ``` ## 定义 IDataRepository 接口 首先,我们定义一个通用的 IDataRepository 接口。这使我们能够以更抽象的方式处理数据存储库,并方便以后进行扩展。 ```java public interface IDataRepository<T> { void Insert(T entity); T GetById(int id); IEnumerable<T> GetAll(); void Update(T entity); bool Delete(int id); } ``` ## 实现 UserRepository 类 接下来,我们实现一个 UserRepository 类来处理 User 实体的数据库操作。UserRepository 类继承 IDataRepository<User> 接口。 ```java using LiteDB; using System; using System.Collections.Generic; public class UserRepository : IDataRepository<User>, IDisposable { private readonly LiteDatabase _database; private readonly ILiteCollection<User> _usersCollection; public UserRepository(string databasePath) { _database = new LiteDatabase(databasePath); _usersCollection = _database.GetCollection<User>("users"); } public void Insert(User entity) { _usersCollection.Insert(entity); } public User GetById(int id) { return _usersCollection.FindById(id); } public IEnumerable<User> GetAll() { return _usersCollection.FindAll(); } public void Update(User entity) { _usersCollection.Update(entity); } public bool Delete(int id) { return _usersCollection.Delete(id); } public void Dispose() { _database?.Dispose(); } } ``` ## 使用 UserRepository 类 有了数据仓储类之后,我们可以在应用程序中使用 UserRepository 来进行User实体的数据库操作。 ```java private void btnRepository_Click(object sender, EventArgs e) { // 数据库文件路径 string databasePath = @"MyData.db"; using (var userRepository = new UserRepository(databasePath)) { // 插入数据 var newUser = new User { Name = "Jane Doe", Email = "janedoe@example.com" }; userRepository.Insert(newUser); MessageBox.Show($"User inserted with Id: {newUser.Id}"); // 查询数据 var user = userRepository.GetById(newUser.Id); if (user != null) { MessageBox.Show($"User found: {user.Name}, {user.Email}"); } // 更新数据 user.Email = "jane.doe@newdomain.com"; userRepository.Update(user); MessageBox.Show("User updated"); // 列出所有用户 var allUsers = userRepository.GetAll(); foreach (var u in allUsers) { MessageBox.Show($"User: {u.Name}, {u.Email}"); } // 删除数据 if (userRepository.Delete(user.Id)) { MessageBox.Show("User deleted"); } } } ``` # 结论 LiteDB 是一个非常实用且易于使用的嵌入式 NoSQL 数据库,适用于小型项目和快速开发。在 C# 中使用 LiteDB 非常简单且高效,通过简单的 API,我们可以方便地进行数据存储和查询。本文介绍了 LiteDB 的基本特点,并通过完整的例子展示了如何进行 CRUD 操作,帮助开发者快速上手。
孙端己
2024年7月23日 14:20
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码