SqlSugar是一个非常强大且轻量级的ORM(对象关系映射)框架,支持多种数据库,包括SQLite。本文将详细介绍如何在C#中使用SqlSugar操作SQLite数据库。
首先,需要安装以下NuGet包:
可以通过NuGet包管理器或Package Manager Console安装:
BashInstall-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; }
}
Javapublic class UserRepository
{
}
C#public void InitializeDatabase()
{
using (var db = DatabaseConfig.GetClient())
{
// 创建数据库表
db.CodeFirst.InitTables<User>();
}
}

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 }
});
}

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);
}
}

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}");
}
}

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);
}
}

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}");
}
}
}

SqlSugar为C#开发者提供了一个简单、高效的SQLite数据库操作方案。通过其强大的ORM功能,可以轻松进行数据库交互,提高开发效率。
希望这篇文章对您有所帮助!
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!