C# MySQL Connector/NET 을 이용한 연동

개요

SQL Server나 Oracle DB는 서버 라이센스 비용이 상상을 초월합니다. 그래서 웬만한 기업에서는 도입을 할 수 없습니다. 그 대안으로 MySQL, MariaDB 등을 사용하게 됩니다. .NET 기반 프로젝트라면 이전에는 SQL Server에 연동해서 작업을 진행했습니다. 라이센스 비용이 부담이 되면서 근래에는 Open Source 기반 DB를 사용하는 경우가 많아졌습니다. .NET 프레임워크에서는 기본적으로 MySQL 에 직접 연결할 수 있는 클래스는 없습니다. ODBC 클래스를 이용해서 연동을 할 수 있는 방법만 존재했습니다. 이 방법도 드라이버를 설치하고 ODBC 설정을 해야 가능합니다. MySQL 에서 제공하는 MySQL Connector 를 이용하여 연동하는 방법을 알아보도록 하겠습니다.

MySQL Connector

MySQL 홈페이지에서 다양한 언어와 플랫폼에 연동할 수 있도록 Connector 를 제공하고 있습니다. 여기에서는 Connector/NET 을 사용하도록 하겠습니다. 다음의 주소에서 다운로드 받으실 수 있습니다.

https://dev.mysql.com/downloads/connector/net/

설치는 별다른 어려움이 없으므로 설치했다고 가정하겠습니다.

연동

Visual Studio를 실행하고 ASP.NET 웹 응용 프로그램 프로젝트를 생성합니다. WinForm 프로젝트를 생성해서 진행하셔도 무방합니다. 솔루션 탐색기에서 참조를 선택하고 오른쪽 버튼을 클릭합니다. 메뉴에서 참조 추가를 선택합니다.

참조 추가 선택

참조 추가 선택

참조 관리자에서 찾아보기를 선택한 후 설치한 경로에서 MySql.Data.dll 을 선택합니다. 그러면 다음과 같이 참조가 됩니다.

MySql.Data 참조 추가

MySql.Data 참조 추가

System.Data.SqlClient 네임스페이스에 포함된 클래스 명칭 앞에 My 만 추가로 붙은 형태라고 생각하시고 사용하시면 됩니다. 예를 들면 다음과 같습니다.

SqlConnection -> MySqlConnection
SqlCommand -> MySqlCommand
.
.
.

MySQL DB 에 연결하는 코드는 다음과 같습니다.

using MySql.Data.MySqlClient;

var connectionString = "server=localhost;user=userid;database=yourdb;password=yourpassword";
var connection = new MySqlConnection(connectionString);

try
{
	Response.Write("MySQL DB 연결 중...");
	connection.Open();

	//DB 연동작업
	
}
catch (Exception ex)
{
	Response.Write(ex.ToString());
}

connection.Close();

SqlConnection 클래스를 사용한 것과 동일한 형태입니다.

다음은 MySqlCommand 클래스를 이용한 예를 살펴보겠습니다. MySqlCommand 클래스를 이용하여 쿼리한 결과를 DataTable 객체에 넣는 예제 입니다.

using System.Data;
using MySql.Data.MySqlClient;

var connectionString = "server=localhost;user=userid;database=yourdb;password=yourpassword";
var connection = new MySqlConnection(connectionString);

try
{
	Response.Write("MySQL DB 연결 중...");
	connection.Open();

	var sql = "SELECT user_name, user_id, user_password FROM your_table";
	var mySqlCommand = new MySqlCommand(sql, connection);
	var mySqlDataReader = mySqlCommand.ExecuteReader();

	var mySqlDataTable = new DataTable();
	mySqlDataTable.Load(mySqlDataReader);
	mySqlDataReader.Close();
}
catch (Exception ex)
{
	Response.Write(ex.ToString());
}

connection.Close();

예제에서 본 것과 같이 기존 Sql … 로 시작되는 클래스를 이용한 방법과 동일합니다. MariaDB 도 같은 방법으로 연동할 수 있습니다.

이상으로 MySQL Connector/NET 을 이용한 연동 방법을 알아보았습니다.

이케아 부쿠(VUKU)

구매동기

간이 옷장 이케아 브레임(BREIM) 을 하나 구매했습니다. 하나로 부족하고 더 사자니 공간을 많이 차지할 것 같았습니다. 조금 고민을 하다가 또 다른 간이 옷장 이케아 부쿠(VUKU) 가 있다는 것을 알고 가격도 저렴해서 고민없이 구매했습니다. 위쪽에 옷걸이에 옷을 걸 수 있고 아래쪽에 옷가지 몇개를 보관할 수 있는 정도면 되어서 크기는 적당했습니다.

조립

설명서를 보니 조립자체는 어려워 보이지 않았습니다. 이케아 브레임(BREIM) 과는 다르게 프레임에 커버를 씌우는 것이 아니고 마치 텐트를 치는 것 같은 과정을 거치게 됩니다. 포장된 것을 보면 마치 텐트 같다는 생각이 듭니다.

이케아 부쿠(VUKU) 처음 포장 상태

이케아 부쿠(VUKU) 처음 포장 상태

포장을 풀어보면 내부 커버 내부에 프레임 부품이 있습니다. 검게 보이는 부분은 하단 부분인데 임시로 사용하는 노란색 장바구니와 같은 재질이라고 생각하시면 됩니다. 왼쪽에 회색, 흰색으로 보이는 부분는 내부 뼈대 역할을 하는 부분 입니다.

이케아 부쿠(VUKU) 개봉

이케아 부쿠(VUKU) 개봉

먼저 플라스틱으로 된 부분에 뼈대가 되는 부품을 끼워서 틀을 잡습니다. 정말 텐트의 부속품인 것처럼 느껴집니다.

이케아 부쿠(VUKU) 위쪽 부품

이케아 부쿠(VUKU) 위쪽 부품

이케아 부쿠(VUKU) 뼈대 부품

이케아 부쿠(VUKU) 뼈대 부품

위쪽의 틀을 잡은 다음 조립 설명서를 참조해서 조립하면 됩니다.

이케아 부쿠(VUKU) 위쪽 틀 부분

이케아 부쿠(VUKU) 위쪽 틀 부분

커버 안쪽에 위 이미지 모양으로 조립된 것을 넣고 모양을 잡으면서 완성하면 됩니다. 그런데 여기에서 문제가 있습니다. 고정된 틀에 커버를 씌우는 것이 아니고 뼈대로 쓰이는 막대를 커버 안쪽 아래에 있는 주머니(?) 같은 곳에 넣어야 합니다. 이게 간단한 것 같은데 짙은 회색 부분의 재질이 광택이 있고 막대가 플라스틱이다 보니 잘 미끄러집니다. 혼자 보다는 도움을 받으면서 조립해야 더 수월합니다. 저는 조립하면서 몇번이나 실패했습니다. 그래도 완성해 놓으니 생각보다는 괜찮았습니다.

이케아 부쿠(VUKU) 완성

이케아 부쿠(VUKU) 완성

이케아 브레임(BREIM) 과 이케아 부쿠(VUKU) 의 크기는 다음과 같습니다. 오른쪽이 이케아 부쿠(VUKU) 입니다.

이케아 부쿠(VUKU) 이케아 브레임(BREIM) 크기 비교

이케아 부쿠(VUKU) 이케아 브레임(BREIM) 크기 비교

제품정보와 가격은 다음의 주소에서 확인하실 수 있습니다.

https://www.ikea.com/kr/ko/catalog/products/10339331/