C#的dapper使用

https://www.jianshu.com/p/c4ca2989d26a

有些文件没有得到更新,就直接在这里找,

右键选第一个, addReference ,跳到上面的这个页面,然后选择右下角第一个,选择文件的路径.dll的路径展示出来就ok啦,记住双击文件

### 操作 SQLite 数据库的 C# Dapper 使用教程 #### 1. 环境准备 在使用 Dapper 操作 SQLite 数据库之前,需要安装必要的 NuGet 包。通常需要以下两个包: - `System.Data.SQLite`: 提供对 SQLite 数据库的支持。 - `Dapper`: 提供轻量级 ORM 支持。 可以通过 Visual Studio 的 NuGet 包管理器或命令行工具进行安装: ```bash Install-Package System.Data.SQLite Install-Package Dapper ``` #### 2. 配置数据库连接 在代码中配置 SQLite 数据库的连接字符串,可以使用硬编码方式或者通过配置文件来实现。例如,使用硬编码的方式: ```csharp public static string conn = @"Data Source=D:\green\sqlite\test.db;"; ``` 也可以通过 `SQLiteConnectionStringBuilder` 来动态构建连接字符串: ```csharp SQLiteConnectionStringBuilder sb = new SQLiteConnectionStringBuilder(); sb.DataSource = @"D:\sqlite.db"; string connectionString = sb.ToString(); ``` #### 3. 查询操作 使用 Dapper 可以非常方便地执行查询操作。以下是一个查询学生表的示例: ```csharp using (IDbConnection cnn = new SQLiteConnection(conn)) { cnn.Open(); var students = cnn.Query<Student>("SELECT * FROM student").ToList(); foreach (var student in students) { Console.WriteLine(student.Name); } } ``` 此方法会返回一个 `List<Student>` 类型的结果,其中 `Student` 是一个包含与数据库字段匹配属性的类 [^1]。 #### 4. 插入操作 插入数据时,可以使用 Dapper 的 `Execute` 方法来执行 SQL 插入语句: ```csharp using (IDbConnection cnn = new SQLiteConnection(conn)) { cnn.Open(); string sql = "INSERT INTO student (Name, Age) VALUES (@Name, @Age)"; cnn.Execute(sql, new { Name = "John Doe", Age = 20 }); } ``` 此代码将一个新的学生记录插入到 `student` 表中 [^3]。 #### 5. 更新操作 更新操作同样使用 `Execute` 方法,传入相应的参数: ```csharp using (IDbConnection cnn = new SQLiteConnection(conn)) { cnn.Open(); string sql = "UPDATE student SET Age = @Age WHERE Name = @Name"; cnn.Execute(sql, new { Name = "John Doe", Age = 21 }); } ``` 该代码将名为 "John Doe" 的学生的年龄更新为 21 [^3]。 #### 6. 删除操作 删除操作也是通过 `Execute` 方法实现: ```csharp using (IDbConnection cnn = new SQLiteConnection(conn)) { cnn.Open(); string sql = "DELETE FROM student WHERE Name = @Name"; cnn.Execute(sql, new { Name = "John Doe" }); } ``` 此代码将删除名为 "John Doe" 的学生记录 [^3]。 #### 7. 事务处理 对于需要多个操作一起提交或回滚的情况,可以使用事务处理: ```csharp using (IDbConnection cnn = new SQLiteConnection(conn)) { cnn.Open(); using (IDbTransaction transaction = cnn.BeginTransaction()) { try { string sqlInsert = "INSERT INTO student (Name, Age) VALUES (@Name, @Age)"; cnn.Execute(sqlInsert, new { Name = "Jane Doe", Age = 22 }, transaction); string sqlUpdate = "UPDATE student SET Age = @Age WHERE Name = @Name"; cnn.Execute(sqlUpdate, new { Name = "Jane Doe", Age = 23 }, transaction); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Console.WriteLine("Transaction failed: " + ex.Message); } } } ``` 此代码展示了如何在一个事务中插入和更新记录,并在发生异常时回滚事务 [^3]。 #### 8. 常见问题解决方案 ##### 8.1 连接字符串错误 确保连接字符串中的路径正确无误,并且目标数据库文件存在。如果路径中有特殊字符,可能需要使用双反斜杠 `\\` 或者直接使用 `@""` 字符串来避免转义问题。 ##### 8.2 参数化查询失败 确保在参数化查询中使用的参数名称与 SQL 语句中的占位符一致。例如,在 SQL 语句中使用 `@Name`,则在参数对象中也应使用 `Name` 属性。 ##### 8.3 类型映射问题 确保数据库表中的字段类型与 C# 类中的属性类型相匹配。如果不匹配,可能会导致查询失败或数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值