Dapper는 Microsoft .NET 플랫폼용 개체 관계형 매핑 제품이라고 하는데,
CRUD를 편하고, 쉽게 처리할 수 있습니다.
먼저 Dapper를 사용할려면 다운로드를 해야겠죠.
Visual Studio를 열어서 test 프로젝트를 생성하여, Nuget에서 Dapper를 검색하여 설치해줍니다.
(test 프로젝트로 윈폼 프로젝트를 생성하였습니다.)
1. 설치
- 설치가 완료되면, 참조에 Dapper가 추가된 걸 확인하실 수 있습니다.
2. DB Connection 정보 입력
- DB 접속정보를 프로젝트의 설정에 사용할 이름과 접속할 정보를 값에 입력해준다.
3. DB connection
- 프로젝트의 설정에서 입력한 DB정보를 sqlconnection에 매핑
private IDbConnection OpenConnection()
{
SqlConnection conn = new SqlConnection(Properties.Settings.Default.ConnDbString);
try
{
conn.Open();
return conn;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return conn;
}
}
4. DB select/insert/update
- 테스트로 tb_user테이블을 만들어 select/insert/update/dynamic(개체(TB_USER)없이 동적으로 처리)
// select
var query = "select user_id, user_name from TB_USER_INFO where user_id=@user_id";
using (var db = OpenConnection())
{
var result = db.Query<TB_USER>(query, new { user_id = textBox1.Text }).FirstOrDefault();
label1.Text = result.user_id;
}
// insert
var query = "insert into TB_USER_INFO (user_id, user_name) values (@user_id, @user_name)";
using (var db = OpenConnection())
{
var result = db.Execute(query, new { user_id = textBox1.Text, user_name = textBox2.Text });
}
// update
var query = "update TB_USER_INFO set user_name=@user_name where user_id=@user_id";
using (var db = OpenConnection())
{
var result = db.Execute(query, new { user_id = textBox1.Text, user_name = textBox2.Text });
}
// dynamic
var query = "select user_id, user_name from tb_user where user_id=@user_id";
using (var db = OpenConnection())
{
dynamic result = db.Query<dynamic>(query, new { user_id = textBox1.Text }).FirstOrDefault();
label1.Text = result.user_id;
}
5. 전체 source
1. Form을 하나 만들어서 아이디/사용자명을 입력할 textbox 생성
2. buttton을 추가하여 select/insert/update 이벤트 추가
3. 결과값을 label에 view
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Dapper;
namespace testApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private IDbConnection OpenConnection()
{
SqlConnection conn = new SqlConnection(Properties.Settings.Default.ConnDbString);
try
{
conn.Open();
return conn;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return conn;
}
}
private void button2_Click(object sender, EventArgs e)
{
var query = "select user_id, user_name from tb_user where user_id=@user_id";
using (var db = OpenConnection())
{
var result = db.Query<TB_USER>(query, new { user_id = textBox1.Text }).FirstOrDefault();
label1.Text = result.user_id;
}
}
private void button3_Click(object sender, EventArgs e)
{
var query = "insert into tb_user (user_id, user_name) values (@user_id, @user_name)";
using (var db = OpenConnection())
{
var result = db.Execute(query, new { user_id = textBox1.Text, user_name = textBox2.Text });
}
}
private void button4_Click(object sender, EventArgs e)
{
var query = "update tb_user set user_name=@user_name where user_id=@user_id";
using (var db = OpenConnection())
{
var result = db.Execute(query, new { user_id = textBox1.Text, user_name = textBox2.Text });
}
}
private void button5_Click(object sender, EventArgs e)
{
var query = "select user_id, user_name from tb_user where user_id=@user_id";
using (var db = OpenConnection())
{
dynamic result = db.Query<dynamic>(query, new { user_id = textBox1.Text }).FirstOrDefault();
label1.Text = result.user_id;
}
}
}
public class TB_USER
{
public string user_id { get; set; }
public string user_name { get; set; }
}
}
'IT > C#' 카테고리의 다른 글
C# - 특정 Control 찾아서 초기화 (0) | 2023.08.18 |
---|---|
C# - ClickOnce 버전 보이기 (0) | 2022.02.18 |
C# - [winform] MDI프로젝트에서 로그인폼 만들기 (0) | 2022.02.10 |
C# - log4net 적용하기 (0) | 2022.02.08 |
C# - [Winform] 중복실행 방지 (0) | 2022.02.07 |
댓글