2021년 11월 6일 토요일

C# 윈폼(ADO.NET, ORACLE을 이용한 로그인 프로그램)

 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)


ginp8GLh7rFeQOuKHilxyo7i31Os2sbhFIkqHOII



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. 실행 결과


dDYVA7oTe8BQe-PTcT4_HcqHdCKQF3fSQBLfAdiqYaVd7DCGznJyydapyUGzh1ou69dMCYT1kyArR9zX


ygvRo5SFtf-8CQmNNaTic6vFADxFawunAFeeJFxl

 

#윈폼, #ADONET, #ORACLE, #로그인예제 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...