SqlSugar是一个非常强大且轻量级的ORM(对象关系映射)框架,支持多种数据库,包括SQLite。本文将详细介绍如何在C#中使用SqlSugar操作SQLite数据库。
准备工作
安装NuGet包
首先,需要安装以下NuGet包:
- SqlSugarCore
- System.Data.SQLite.Core
可以通过NuGet包管理器或Package Manager Console安装:
Install-Package SqlSugarCore
Install-Package System.Data.SQLite.Core
基本配置
数据库连接配置
using SqlSugar;
publicclass 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;
}
}
实体类定义
使用特性标记
using SqlSugar;
// 用户实体类
[SugarTable("Users")] // 指定表名
publicclass User
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
publicint Id { get; set; }
[SugarColumn(ColumnName = "username")]
publicstring Username { get; set; }
[SugarColumn(ColumnName = "email")]
publicstring Email { get; set; }
[SugarColumn(ColumnName = "age")]
publicint Age { get; set; }
[SugarColumn(ColumnName = "create_time")]
public DateTime CreateTime { get; set; }
}
数据库操作UserRepository
public class UserRepository
{
}
创建数据库和表
public void InitializeDatabase()
{
using (var db = DatabaseConfig.GetClient())
{
// 创建数据库表
db.CodeFirst.InitTables<User>();
}
}

插入数据
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}");
}
}
}
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 }
});
}
查询数据
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();
}
}
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);
}
}

更新数据
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}");
}
}

删除数据
public void DeleteUser(int userId)
{
using (var db = DatabaseConfig.GetClient())
{
// 删除指定用户
int affectedRows = db.Deleteable<User>()
.Where(u => u.Id == userId)
.ExecuteCommand();
Console.WriteLine($"删除的行数:{affectedRows}");
}
}
高级查询
分页查询
public List<User> GetUsersByPage(int pageIndex, int pageSize)
{
using (var db = DatabaseConfig.GetClient())
{
// 分页查询用户
return db.Queryable<User>()
.OrderBy(u => u.Id)
.ToPageList(pageIndex, pageSize);
}
}

事务处理
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}");
}
}
}

注意事项
- 确保正确处理数据库连接
- 使用参数化查询防止SQL注入
- 合理使用事务
- 注意异常处理
- 对于大量数据,考虑使用批处理
结语
SqlSugar为C#开发者提供了一个简单、高效的SQLite数据库操作方案。通过其强大的ORM功能,可以轻松进行数据库交互,提高开发效率。
希望这篇文章对您有所帮助!
如果你正在从事上位机、自动化、机器视觉、物联网(IOT)项目或数字化转型方面的工作,欢迎加入我的微信圈子!在这里,我们不仅可以轻松畅聊最新技术动态和行业趋势,还能够在技术问题上互相帮助和支持。我会尽量利用我的知识和经验来帮助你解决问题,当然也期待从大家的专业见解中学习和成长。无论你是新手还是老鸟,期待与志同道合的朋友交流心得,一起进步!

文章转载自技术老小子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




