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" ); |