< C#에서의 MySql 서버 연결 및 사용 방법 >

1. .NET용 MySql 드라이버를 설치 한다.
   - 경우에 따라 다르겠지만 본인의 경우에는 MySql 홈페이지에서 만든 드라이버를 설치 후 연결을 하니
     euckr 문자셋이 없다는 에러를 내면서 도저히 연결이 되지 않았다.
     그래서 데브피아에서 검색한 결과 ‘MySQLDriverCS’ 라는 드라이버를 알게 되어 이것을 설치 했다..
     물론 연결이 아주 잘 되었다.

    - 설치 및 사용 방법 
     여기에서 받는다. http://sourceforge.net/projects/mysqldrivercs
     그런 후 설치를 한 후 프로젝트에서 참조 시킨다. 만약 참조 화면에 나타나지 않으면 수동으로
     설치된 폴더에 가서 찾아서 참조 시킨다.

2. 서버 연결
- using MySQLDriverCS;
………..
  MySQLConnection conn =  new MySQLConnection( new MySQLConnectionString("localhost","mysql","root","").AsString );
MessageBox.Show("Connecting to database");
try
{
        conn.Open();
}
catch(Exception ex)
{
     MessageBox.Show(ex.Message);
        return;
}


3. MySQLSelectCommand 를 사용한 쿼리
- 지정된 테이블의 모든 필드를 쿼리
  DataTable dt = new MySQLSelectCommand(Connection, new string[]{"*"}, new string[] {"MoneyResult"}, null, null, null).Table;
foreach(DataRow row in dt.Rows)
{
           int i = 0;
           string AreaCode = row["AreaCode"].ToString();
++i;
    }

- 특정 필드 쿼리




…………….




DataTable dt = new MySQLSelectCommand(DBConn,
                new string[] {"SettingID","SettingValue"},
               new string[] {"Settings"},
               new object[,] {{"SettingID","=",SettingID}},
               null,
               null
            ).Table;
    string Value = null;
    if(dt.Rows.Count!=0)
    {
        Value = dt.Rows[0]["SettingValue] as string;
     }
     else
     {
        // Value not found
      }
      ...

- WHERE 사용 방법
   ………………………………………………..
string StartDt = "2005-12-01 00:00:00";                     // WHERE에서 값으로 사용한다.
string EndDt = "2005-12-01 23:59:59";

DataTable dt = new MySQLSelectCommand( Connection, new string[]{"*"}, new string[] {"ItemResult"},
                                              new object[,]{ {"Dt",">=",StartDt},{"Dt","<=",EndDt} },
                                                    null, null).Table;
foreach(DataRow row in dt.Rows)
{
            ……………………
}
……………………………………………………..


- 원래는 쿼리는 MySQLCommand 와 MySQLDataReader를 이용하는 것이 보통 이지만 본인이
자세히는 모르지만 MySQLDataReader가 ADO.NET에 있는 비슷한 클래스와 같은 역할을 한다면
쿼리 후 페치를 할 때 마다 서버에 연결된 상태에서 값을 가져와야 되기 때문에 데이터가 작은
경우가 아니라면 성능에 좀 문제가 되지 않을까 해서 사용하지 않고 MySQLSelectCommand를
사용하고 있음.

  ………………………………………..
  MySQLCommand cmd = new MySQLCommand("select host,user from mysql.user",conn);
MySQLDataReader reader = cmd.ExecuteReaderEx();
while(reader.Read())
{
            ListViewItem lvi = new ListViewItem("Low Level - Host:"+reader.GetString(0)+" , User:"+reader.GetString(1));
            lvData.Items.Add(lvi);
}
reader.Close();
cmd.Dispose();
   ……………………………………………………………

- DataAdapter 를 사용하여 쿼리 하는 방법
예)
  ………………………………………………..
  string strQuery = "SELECT Dt, ItemCode, Cnt FROM ItemResult”;
  MySQLDataAdapter DataAdapter = new MySQLDataAdapter();
MySQLCommand cmd = new MySQLCommand();
cmd.Connection = Connection;
cmd.CommandText = strQuery;
DataAdapter.SelectCommand =  cmd;
                               
DataSet ResultDataSet = new DataSet();
DataAdapter.Fill( ResultDataSet , "ItemResult" );
…………………………………………….



(N20091112)


본 블로그를 찾은 분들에게 오늘도 축복 있으시길...

+ Recent posts