2025-11-08
C#
00

目录

准备工作
安装NuGet包
基本配置
数据库连接配置
实体类定义
使用特性标记
数据库操作UserRepository
创建数据库和表
插入数据
查询数据
更新数据
删除数据
高级查询
分页查询
事务处理
注意事项
结语

SqlSugar是一个非常强大且轻量级的ORM(对象关系映射)框架,支持多种数据库,包括SQLite。本文将详细介绍如何在C#中使用SqlSugar操作SQLite数据库。

准备工作

安装NuGet包

首先,需要安装以下NuGet包:

  • SqlSugarCore
  • System.Data.SQLite.Core

可以通过NuGet包管理器或Package Manager Console安装:

Bash
Install-Package SqlSugarCore Install-Package System.Data.SQLite.Core

基本配置

数据库连接配置

C#
using SqlSugar; public class DatabaseConfig { public static SqlSugarClient GetClient() { SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = "Data Source=mydatabase.sqlite", // SQLite数据库路径 DbType = DbType.Sqlite, // 指定数据库类型为SQLite IsAutoCloseConnection = true, // 自动释放连接 InitKeyType = InitKeyType.Attribute // 主键配置方式 }); // 开启SQL执行日志 db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine(sql); // 打印SQL语句 }; return db; } }

实体类定义

使用特性标记

C#
using SqlSugar; // 用户实体类 [SugarTable("Users")] // 指定表名 public class User { [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } [SugarColumn(ColumnName = "username")] public string Username { get; set; } [SugarColumn(ColumnName = "email")] public string Email { get; set; } [SugarColumn(ColumnName = "age")] public int Age { get; set; } [SugarColumn(ColumnName = "create_time")] public DateTime CreateTime { get; set; } }

数据库操作UserRepository

Java
public class UserRepository { }

创建数据库和表

C#
public void InitializeDatabase() { using (var db = DatabaseConfig.GetClient()) { // 创建数据库表 db.CodeFirst.InitTables<User>(); } }

image.png

插入数据

C#
public class UserRepository { public void AddUser(User user) { using (var db = DatabaseConfig.GetClient()) { // 插入单个用户 int newId = db.Insertable(user).ExecuteReturnIdentity(); Console.WriteLine($"新用户ID:{newId}"); } } public void AddUsers(List<User> users) { using (var db = DatabaseConfig.GetClient()) { // 批量插入用户 int affectedRows = db.Insertable(users).ExecuteCommand(); Console.WriteLine($"插入的用户数:{affectedRows}"); } } }
C#
static void Main(string[] args) { UserRepository rep = new UserRepository(); rep.AddUser(new User { Username = "John Doe", Email = "john@example.com", Age = 30, CreateTime = DateTime.Now }); rep.AddUsers(new List<User> { new User { Username = "Rick Doe", Email = "rick@example.com", Age = 28, CreateTime = DateTime.Now }, new User { Username = "Mike Smith", Email = "mike@example.com", Age = 40, CreateTime = DateTime.Now } }); }

image.png

查询数据

C#
public User GetUserById(int id) { using (var db = DatabaseConfig.GetClient()) { // 根据ID查询用户 return db.Queryable<User>() .Where(u => u.Id == id) .First(); } } public List<User> GetUsersByAge(int minAge, int maxAge) { using (var db = DatabaseConfig.GetClient()) { // 按年龄范围查询用户 return db.Queryable<User>() .Where(u => u.Age >= minAge && u.Age <= maxAge) .ToList(); } }
C#
static void Main(string[] args) { UserRepository rep = new UserRepository(); var user = rep.GetUserById(1); Console.WriteLine(user.Username); var users = rep.GetUsersByAge(15, 30); foreach (var u in users) { Console.WriteLine(u.Username); } }

image.png

更新数据

C#
public void UpdateUserEmail(int userId, string newEmail) { using (var db = DatabaseConfig.GetClient()) { // 更新用户邮箱 int affectedRows = db.Updateable<User>() .SetColumns(u => u.Email == newEmail) .Where(u => u.Id == userId) .ExecuteCommand(); Console.WriteLine($"更新的行数:{affectedRows}"); } }

image.png

删除数据

C#
public void DeleteUser(int userId) { using (var db = DatabaseConfig.GetClient()) { // 删除指定用户 int affectedRows = db.Deleteable<User>() .Where(u => u.Id == userId) .ExecuteCommand(); Console.WriteLine($"删除的行数:{affectedRows}"); } }

高级查询

分页查询

C#
public List<User> GetUsersByPage(int pageIndex, int pageSize) { using (var db = DatabaseConfig.GetClient()) { // 分页查询用户 return db.Queryable<User>() .OrderBy(u => u.Id) .ToPageList(pageIndex, pageSize); } }

image.png

事务处理

C#
public void PerformTransaction() { using (var db = DatabaseConfig.GetClient()) { try { // 开启事务 db.Ado.BeginTran(); // 执行多个数据库操作 db.Insertable(new User { Username = "新用户" }).ExecuteCommand(); db.Updateable<User>().SetColumns(u => u.Age == 30).Where(u => u.Id == 1).ExecuteCommand(); // 提交事务 db.Ado.CommitTran(); Console.WriteLine("事务执行成功"); } catch (Exception ex) { // 回滚事务 db.Ado.RollbackTran(); Console.WriteLine($"事务执行失败:{ex.Message}"); } } }

image.png

注意事项

  1. 确保正确处理数据库连接
  2. 使用参数化查询防止SQL注入
  3. 合理使用事务
  4. 注意异常处理
  5. 对于大量数据,考虑使用批处理

结语

SqlSugar为C#开发者提供了一个简单、高效的SQLite数据库操作方案。通过其强大的ORM功能,可以轻松进行数据库交互,提高开发效率。

希望这篇文章对您有所帮助!

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!