插入

Dapper 插入操作

  1. Dapper 提供 Execute() 扩展方法,用来执行增、删、改 SQL,返回受影响行数(int)
  2. 插入思路:手写带参数占位符 @参数名INSERT SQL;传入实体对象自动映射参数,杜绝SQL注入。
  3. 语法规范:INSERT INTO 表名(列1,列2...) VALUES(@参数1,@参数2...)

例子

using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;

namespace DapperDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1.读取连接字符串
            var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;

            // 2.using自动释放数据库连接
            using (IDbConnection db = new MySqlConnection(connStr))
            {
                // 3.编写插入SQL,操作 student 表
                string sql = @"INSERT INTO student (FirstName, LastName, Email) 
                               VALUES (@FirstName, @LastName, @Email)";

                // 4.构造实体对象
                var stu = new Student()
                {
                    FirstName = "foxdevelop",
                    LastName = "com",
                    Email = "admin@foxdevelop.com"
                };

                // 5.执行插入,返回受影响行数
                int rows = db.Execute(sql, stu);

                // 6.查询验证数据
                List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
            }

            Console.ReadKey();
        }
    }

    // Student实体类(属性名必须和SQL参数@名称一致)
    public class Student
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }
}Code language: HTML, XML (xml)

说明

  1. 参数映射规则
    Dapper 自动根据实体属性名匹配 SQL 中 @xxx 参数,名称大小写不敏感,但尽量保持一致。
  2. Execute 返回值
    int rowsAffected = db.Execute(sql, stu);
  • 返回 ≥1:插入成功;
  • 返回 0:没有任何数据被插入。
  1. 连接字符串配置(App.config)
<configuration>
  <connectionStrings>
    <add name="StudentConnection" 
         connectionString="server=localhost;database=testdb;uid=root;pwd=123456" 
         providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
</configuration>Code language: HTML, XML (xml)

获取新增数据自增主键ID(MySQL)

如果 student 表存在自增主键 Id,想要拿到新增记录id:

string sql = @"INSERT INTO student (FirstName, LastName, Email) 
               VALUES (@FirstName, @LastName, @Email);
               SELECT LAST_INSERT_ID();";

long newStudentId = db.ExecuteScalar<long>(sql, stu);Code language: HTML, XML (xml)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注