삽입

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.student 테이블에 삽입할 SQL 작성
                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)

삽입

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다