.Net Project/ADO.NET 3.5

18장 ADO.NET 연결 이벤트 (Connection&Close)

Magic_kit 2009. 9. 30. 12:20
반응형
 DataConnection
- 개체에 액세스하려면 양식 서식 파일과 연결돤 DataConnectionCollection 개체를 사용
- DataConnectionCollection 개체에 액세스하려면 XMLForm 클래스의 DataConnection


 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ConnectionEvent
{
    public partial class Form1 : Form
    {
        //전역변수로 선언
        private SqlConnection con;
        public Form1()
        {
            InitializeComponent();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                con.Open();
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
     }

        private void Form1_Load(object sender, EventArgs e)
        {
            con = new SqlConnection();
            con.ConnectionString =
                   "server=.;database=Market;uid=Market;pwd=1234;";
         
            con.StateChange += new
                  StateChangeEventHandler(con_StateChange);
            con.InfoMessage += new
                  SqlInfoMessageEventHandler(con_InfoMessage);
        }

 StateChange
- 이벤드는 이벤트 상태가 닫힘에서 열림으로 변경되거나 열림에서
  닫힘으로 변경되면 발생합니다.
- connection 상태가 바뀌면 StateChange 이벤트 발생하면 
  connection의 상태 변화를 확인할 수 있도록 
  StateChangeEvent를 받습니다
 InfoMessage
- 정보 메시지가 데이터 소스에서 반환시 발생하며,
  정보 메시지는 예외가 발생하지 않는 데이터 소스의 메시지 입니다.
- 데이터 소스에서 경고 및 정보 메싲를 검색 가능
- 데이터 소스에서 반환된 오휴의 심각도 수준이 11~16에 해당하면
  예외가 발생
- InfoMessage 이벤트 사용하여 캡쳐 될 수 있습니다

     void con_InfoMessage(object sender, SqlInfoMessageEventArgs e)
        {
            listBox1.Items.Add(e.Message);
        }

        void con_StateChange(object sender, StateChangeEventArgs e)
        {
            string Mes;
            Mes = string.Format("원래 상태 : {0}, 현재 상태 {1}",
                e.OriginalState, e.CurrentState);
            listBox1.Items.Add(Mes);
        }

        private void Form1_FormClosed
                                         (object sender, FormClosedEventArgs e)
        {
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
        }
    }
}








반응형