그중에서도 같은 MS 제품인 MS-SQL을 사용할때가 가장 간편하죠.
그래서 MySQL을 DB로 사용할 경우 아주아주 약간 귀찮아집니다.
먼저 MySQL Connector .NET이 필요합니다. 닷넷 전용 MySQL 커넥터지요.
5.1 버젼이 stable 안정 버젼인데, 이상하게 제가 짠 소스로는 자꾸 Exception 오류가 뜨는 바람에 리노군의 구글링으로 5.2 버젼을 쓰면 정상적이다 라는 의견에 5.2 버젼으로 다시 설치해보니 아무런 오류가 뜨지 않더랍니다.
http://dev.mysql.com/downloads/connector/net/5.2.html
설치하였으면 이제 코드를 함 짜봐야죠. ㅎㅎ
먼저 요거 추가합니다.
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
그리고 DB 커넥션 스트링을 만듭시다.
private string GBConStr()
{
string myConnectionString
= "Database=management;Data Source=localhost;User Id=user;Password=passwd";
return myConnectionString;
}
일단 간단히 커넥션 함수를 만들어 주고...
{
if (LoginValidate() == true)
{
MessageBox.Show("로그인 되었습니다.", "로그인", MessageBoxButtons.OK, MessageBoxIcon.Information);
tbox_ID.Enabled = false;
tbox_PW.Enabled = false;
TopMenu.Enabled = true;
Login_Btn.Visible = false;
Logout_Btn.Visible = true;
}
}
접속을 시도할 이벤트를 만듭니다.
위 코드를 보면 알겠지만 Login_Btn 이라는 버튼을 클릭할 경우 일어나는 이벤트 입니다.
LoginValidate() 함수를 통해 정상적으로 로그인이 된 경우만 아래 조건을 수행합니다.
{
bool bTmp = true;
MySqlConnection DBConnection;
DBConnection = new MySqlConnection();
DBConnection.ConnectionString = GBConStr();
MySqlCommand Cmd;
Cmd = new MySqlCommand();
try
{
DBConnection.Open();
Cmd.Connection = DBConnection;
Cmd.CommandText
= "SELECT pk_UserNum, Name_Hangul, bStatus, bAdmin FROM mng_user WHERE Name_Hangul = '" + tbox_ID.Text + "' AND User_Passwd = '" + tbox_PW.Text + "' and bAdmin = 1";
MySqlDataReader myReader;
myReader = Cmd.ExecuteReader();
if (!myReader.Read())
{
MessageBox.Show("사용자 ID 나 비밀번호가 정확하지 않거나 관리자 권한이 없습니다.", "로그인", MessageBoxButtons.OK, MessageBoxIcon.Error);
bTmp = false;
}
myReader.Dispose();
myReader.Close();
/*
textBox1.Text = textBox1.Text + "\r\n현재 데이터베이스 : " + DBConnection.Database;
textBox1.Text = textBox1.Text + "\r\n현재 연결 상태 : " + DBConnection.State;
textBox1.Text = textBox1.Text + "\r\n데이터베이스 버전 : " + DBConnection.ServerVersion;
*/
}
catch (Exception E)
{
MessageBox.Show("데이터베이스 오류:\r\n" + E.Message + "\r\n" + E.StackTrace);
bTmp = false;
}
finally
{
Cmd.Dispose();
DBConnection.Dispose();
DBConnection.Close();
}
return bTmp;
}
가장 중요한 MySQL DB 커넥션 부분입니다.
대충 봐도 아주 쉽습니다. MS-SQL 쓸때와 동일한 구조죠.
1. 커넥션 변수를 선언한다.
2. 커맨드 변수를 선언한다.
3. DB 를 연다.
4. 쿼리를 실행한다.
5. 결과 값이 있느냐 없느냐를 조건으로 넣어준다.
myReader = Cmd.ExecuteReader();
if (!myReader.Read())
{
MessageBox.Show("사용자 ID 나 비밀번호가 정확하지 않거나 관리자 권한이 없습니다.", "로그인", MessageBoxButtons.OK, MessageBoxIcon.Error);
bTmp = false;
}
요 녀석이 그러한 역할을 수행합니다.
MySqlDataReader를 통해 데이터를 읽을게 있는지 없는지 간단하게 체크한 것입니다.
= "SELECT pk_UserNum, Name_Hangul, bStatus, bAdmin FROM mng_user WHERE Name_Hangul = '" + tbox_ID.Text + "' AND User_Passwd = '" + tbox_PW.Text + "' and bAdmin = 1";
MySqlDataReader myReader;
그러고보니 위와 같은 방법으로.. 쿼리를 직접 실행하게 하였는데 이럴 경우 SQL Injection 등 여러 문제가 있으니 parameter 방식으로 하는 습관을 들이시기 바랍니다. 저도 아직 습관이 들지 않아 귀찮아서 저렇게 해버렸어요 ㅎㅎ
이렇게 첫번째 이야기는 글을 줄입니다. 다음에 다시 올께요!



sfs.zip











