정리가 필요한 카테고리(추후 정리)/C#,Unity

C#] MySQL 사용하기

TwinParadox 2017. 2. 16. 03:34
728x90

C#] MySQL 사용하기



필자가 읽고 있는 책에서 그리고 공부하고 있는 사이트에서

C#을 이용해서 데이터베이스를 다룰 수 있게끔 해놨는데,

그 중에 필자의 눈에 들어왔던 것은 MySQL을 활용하는 것이었다.


이미 필자는 지난 학기 데이터베이스 프로그래밍을 통해서 인터넷 쇼핑몰을 만들어본 경험이 있어서

MySQL 쿼리문 활용은 어렵지 않게 할 수 있지만, 이를 C#으로 다룰 수 있다는 것에

곧바로 필자가 평소 즐기는 게임인 메이플스토리의 '코어 젬스톤'이라는 것을 획득했을 때마다

작성하여 기록하는 일종의 가계부 비슷한 프로그램을 만들었다.

(이를 속칭 '젬계부'라 한다...)




(디자인이 개판이어도 이해 바란다.. 그냥 실습이 목적이었고, 기껏해야 게임 아이템 획득 수량 기록하는 프로그램이니..)




일단 MySQL 데이터베이스를 이용하기 앞서,

필자는 MySQL Connector Net을 이용하였는데, 이는 Oracle에서 제공하고 있다.



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



사용하는데 있어서 별다른 설정은 필요하지 않다.

그냥 msi 파일을 통해 설치를 진행하고 별다른 설정 없이 Typical Install을 이용하면 된다.

일단 서버를 이용하기 위해

MySQL 서버에 먼저 데이터베이스와 테이블을 생성해두고 작업을 진행하자.




(여기서 gemstone 데이터베이스에서 테이블을 만들었지만, 나중에 Twinparadox 데이터베이스에 다시 생성했다.)






코드 입력에 앞서서 MySQL Connection NET의 참조를 추가해야 한다.

그러기 위해서는 '프로젝트 - 참조 추가' 메뉴를 클릭해 '참조 추가' 대화상자를 실행해 참조를 진행해야 한다.







위 스크린샷과 같이 MySql.Data 구성요소를 선택하여 구성요소를 추가해주어야 하며,

참조가 성공적으로 이루어지면 솔루션 탐색기에서 확인할 수 있다.


참조를 완료하고 나서 MySQL 서버와 연동하기 위해서는 추가한 참조에 대한 네임스페이스를 추가해주어야 한다.


using MySql.Data.MySqlClient;


이 네임 스페이스 하위에서 MySqlConnection, MySqlCommand 등의 클래스를 사용해 서버와 연동한다.



데이터의 삽입, 삭제, 갱신등은 MySqlCommand에 해당 SQL문을 지정하여 실행한다.

일반적인 절차는 MySqlConnection을 사용해 서버와 연결하고, MySqlCommand에 SQL문을 지정한 후 실행한다.




1
2
3
4
var GConn = new MySqlConnection(StrSQL);
GConn.Open();
var Comm = new MySqlCommand("Select * from gemstone", GConn);
var myRead = Comm.ExecuteReader();
cs



상기 코드는 필자가 급히 만들었던 '젬계부'가 최초 실행되었을 때 데이터를 불러들이는 코드 중 일부로,

StrSQL이라는 문자열은 아래와 같은 정보를 가지고 있고, 이는 데이터베이스 연결을 위해 반드시 필요하다.

필자의 root 계정이 'apmsetup'인 이유는 인터넷 쇼핑몰 프로젝트 당시 APMSETUP 프로그램을 이용했기 때문이다.


private string StrSQL = "Data Source=localhost;Database=Twinparadox;User Id=root;Password=apmsetup";



MySQL의 데이터를 가져오기 위해서는 MySqlCommand/MySqlDataReader 혹은 MySqlDataAdapter를 사용한다.

MySqlDataReader는 연결모드로 데이터를 서버에서 가져오지만,

MySqlDataAdapter는 한꺼번에 클라이언트 메모리로 데이터를 가져온 후 연결을 끊는다는 사실에 유념해야 한다.

MySqlDataAdapter에서 가져온 데이터는 주로 DataSet 객체 안에 메모리상의 테이블 형태로 존재하는데,

이를 각종 컨트롤들에게 바인딩시킬 수 있다. 


필자가 대형 프로젝트에 참가해 해당 파트에 참가해 다뤄본 내용도 아니고

급히, 획득한 게임 아이템 수량을 파악하기 위해서 다루었기 때문에,

세부적인 내용이나 실무에 가까운 내용은 거의 없어

영양가가 없다고 할지도 모르겠지만,

막연히 데이터베이스를 다루고 싶어하는 필자 같은 사람들에게 조금의 도움이 되었기를 바란다.

728x90