[C#] C#에서 MySQL 연동 사용하기

MySQL Connector/Net 사용

C#에서 MySQL을 엑세스하기 위해서는 일반적으로 MySQL을 위한 ADO.NET 드라이버인 MySQL Connector/Net을 사용하는데, 이 MySQL Connector/Net은 MySQL 웹사이트에서 무료 다운 받아 설치할 수 있다. 드라이버를 설치한 후에 C# 프로젝트에서 MySql.Data.dll를 참조한 후 MySql.Data.MySqlClient 네임스페이스를 참조하면, MySQL버젼의 ADO.NET 클래스들 (예: MySqlConnection, MySqlCommand, MySqlDataReader 등)을 이용할 수 있다.

 

[dropshadowbox align=”none” effect=”lifted-both” width=”100%” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ]

using MySql.Data.MySqlClient;

MySqlConnection conn = new MySqlConnection(strConn);

[/dropshadowbox]

MySQL 데이타베이스 연결

MySQL 데이타베이스를 연결하기 위해서는 MySqlConnection 클래스를 사용한다. 이 클래스를 생성할 때, Connection String을 넣어 주어야 하는데, 여기에는 Server명, DB명, 사용자명, 암호등을 지정해 준다. 아래 예는 로컬 MySQL 서버에 root 사용자명과 암호명 123을 사용하여 test 데이타베이스에 접속하는 예이다.

[dropshadowbox align=”none” effect=”lifted-both” width=”100%” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ]

string strConn= “Server=localhost;Database=test;Uid=root;Pwd=123;”;
MySqlConnection conn = new MySqlConnection(strConn);

conn.Close();

[/dropshadowbox]

MySQL 데이타 INSERT, UPDATE, DELETE 

데이타의 삽입, 삭제, 갱신등은 MySqlCommand에 해당 SQL문을 지정하여 실행한다. 일반적인 절차는 MySqlConnection을 사용해 서버 연결을 한 후, MySqlCommand에 INSERT, UPDATE, DELETE 등의 SQL문을 지정한 후 실행한다. 아래 예제는 한 ROW를 INSERT한후 이를 UPDATE하는 예이다.

[csharp]

private static void InsertUpdate()
{
string strConn = "Server=localhost;Database=test;Uid=root;Pwd=zzz;";

using (MySqlConnection conn = new MySqlConnection(strConn))
{
conn.Open();
MySqlCommand cmd = new MySqlCommand("INSERT INTO Tab1 VALUES (2, ‘Tom’)", conn);
cmd.ExecuteNonQuery();

cmd.CommandText = "UPDATE Tab1 SET Name=’Tim’ WHERE Id=2";
cmd.ExecuteNonQuery();
}
}

 

[/csharp]

MySQL 데이타 읽기 

MySQL의 데이타를 가져오기 위해서는 MySqlCommand/MySqlDataReader 혹은 MySqlDataAdapter를 사용한다. MySqlDataReader는 연결모드로 데이타를 서버에서 가져오는 반면, MySqlDataAdapter는 한꺼번에 클라이언트 메모리로 데이타를 가져온후 연결을 끊는다. MySqlDataAdapter에서 가져온 데이타는 주로 DataSet 객체 안에 메모리상의 테이블 형태로 존재하는데, 이를 각종 컨트롤들에게 바인딩시킬 수 있다.

[csharp]
private static void SelectUsingReader()
{
string connStr = "Server=localhost;Database=test;Uid=root;Pwd=zzz;";

using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "SELECT * FROM Tab1 WHERE Id>=2";

//ExecuteReader를 이용하여
//연결 모드로 데이타 가져오기
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine("{0}: {1}", rdr["Id"], rdr["Name"]);
}
rdr.Close();
}
}

private static void SelectUsingAdapter()
{
DataSet ds = new DataSet();
string connStr = "Server=localhost;Database=test;Uid=root;Pwd=zzz;";

using (MySqlConnection conn = new MySqlConnection(connStr))
{
//MySqlDataAdapter 클래스를 이용하여
//비연결 모드로 데이타 가져오기
string sql = "SELECT * FROM Tab1 WHERE Id>=2";
MySqlDataAdapter adpt = new MySqlDataAdapter(sql, conn);
adpt.Fill(ds, "Tab1");
}

foreach (DataRow r in ds.Tables[0].Rows)
{
Console.WriteLine(r["Name"]);
}
}

[/csharp]

한글 깨짐 현상이 있을 경우..
C# 과 mysql 연동시 한글깨짐 현상

DATABASE=AnyKeeperDBMS;SERVER=61.96.223.78;Connect Timeout=30;USER id=cnt;pwd=cnt;CHARSET=utf8
마지막에 CHARSET=utf8 추가 (DataBase 언어set이 utf8로 정의 되어있을 경우)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다