C# 윈폼(ADO.NET, ORACLE을 이용한 로그인 프로그램)
1. 오라클 데이터베이스, ADO.NET를 이용하여 아이디, 비밀번호를 입력 받아 로그인 하는 예제를 작성해보자. (SQL문장 처리내역은 별도의 로그파일에 기록)
- 오라클을 사용하기 위해서 ODP.NET을 설치해야 한다.
(http://www.ojc.asia/bbs/board.php?bo_table=LceADOnet&wr_id=44)
2. Login 이라는 윈도우 응응 프로그램으로 프로젝트를 생성하자.
총 3개의 파일이 필요하다.
- 클래스파일 : Log.cs,
- 클래스파일 : Program.cs,
- 윈폼파일 : FrmLogin.cs
3. Log출력용 Class 파일 Log.cs (클래스 파일을 추가하자.)
using System;
using System.IO;
namespace Login
{
class Log
{
//C드라이브에dotnet폴더를만들자.
public static void WriteLine(string name, string e)
{
string filename = @"c:\dotnet\" + name;
string logtime = DateTime.Now.ToString();
FileStream aFile = new FileStream(filename, FileMode.Create);
StreamWriter aWriter = new StreamWriter(aFile, System.Text.Encoding.Default);
aWriter.WriteLine("[" + logtime + "] ");
aWriter.WriteLine(e);
aWriter.Flush();
aWriter.Close();
}
}
}
4. 공통 Class 파일 Program.cs (DB접속, SQL문 처리용)
- 먼저 ORACLE DB에 접속을 하여 로그인을 위한 member 테이블을 작성하자.
SQL> create table member (
2 id varchar2(20) primary key,
3 pwd varchar2(20)
4 );
SQL> insert into member (id, pwd) values ('onj','onj');
SQL> commit;
5. Program.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlTypes;
using System.Windows.Forms;
using System.Collections;
Namespace Login {
public class Common_DB
{
// DataBase Connection
public static OleDbConnection DBConnection() {
OleDbConnection Conn;
//아래는 오라클용 접속 문자열, data source 애는 tnsnames.ora 파일에 있는 Alias명을 넣으면 됩니다.
string ConStr = ("Provider=MSDAORA;data source=onj;User ID=scott;Password=tiger");
Conn = new OleDbConnection(ConStr);
return Conn;
}
// DataSelect
public static OleDbDataReader DataSelect(string sql, OleDbConnection Conn) {
try {
OleDbCommand myCommand = new OleDbCommand(sql, Conn);
return myCommand.ExecuteReader();
}
catch (Exception ex) {
//Log File에 출력
Log.WriteLine("FrmLogin", ex.ToString());
MessageBox.Show(sql + "\n" + ex.Message, "DataSelect");
return null;
}
finally
{
}
}
}
}
6. FrmLogin.cs에 아래와 같이 컨트롤을 배치하자.
- Form(FrmLogin.cs, Name:FrmLogin)
- TextBox(Name : txtID), TextBox(Name : txtPWD)
- Button(Name : button1)
7. FrmLogin.cs (C# 코드 영역)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Login{
public partial class FrmLogin : Form {
private OleDbConnection LocalConn;
public FrmLogin() {
InitializeComponent();
}
static void Main() {
Application.Run(new FrmLogin());
}
private void button1_Click(object sender, EventArgs e) {
OleDbDataReader myReader;
string sql = null;
try {
LocalConn = Common_DB.DBConnection();
LocalConn.Open();
if (txtID.Text == "" || txtPWD.Text == "")
{
MessageBox.Show("ID 또는 Password를 입력 하세요...");
return;
}
sql = "select pwd from member ";
sql += " where id = " + "'" + txtID.Text + "'“;
myReader = Common_DB.DataSelect(sql, LocalConn);
if (myReader.Read()) {
if (txtPWD.Text != myReader["pwd"].ToString())
{
MessageBox.Show("Password가 맞지 않습니다...");
return;
}
}
else {
MessageBox.Show("등록되지 않은 ID 입니다.");
return;
}
//----------- ID가 PWD가 맞는 경우
Form f = new Form();
f.Text = "로그인 OK";
f.ShowDialog();
}
catch (Exception e1) {
Log.WriteLine("FrmLogin", e1.ToString());
MessageBox.Show(e1.ToString() + sql, "FrmLogin :: 로그인오류!");
}
}
//패스워드를 입력하고 엔터키를 입력해도 로그인 되도록…
private void txtPWD_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) {
button1_Click(sender, e);
}
}
}
}
8. 실행 결과
#윈폼, #ADONET, #ORACLE, #로그인예제
댓글 없음:
댓글 쓰기