* "윈폼"에서 '새 프로젝트 만들기'로 프로젝트 실행



==> Form1.cs [디자인] 

  

 

-------------------------------------------------------------------------------------

  

==> Form1.cs 소스 

 

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 WinDataAdapter

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            DisplayData1();

            DisplayData2();

        }

 

 

 

        // Connection - Command - DataReader(읽기전용) - DataTable(윈폼에서만!) 패턴을 사용

        private void DisplayData1()

        {

            SqlConnection con = new SqlConnection(

                "server=.;database=AddressBook;uid=AddressBook;pwd=6750440;");

            con.Open();

            SqlCommand cmd = new SqlCommand("Select * From AddressBook", con);

            SqlDataReader dr = cmd.ExecuteReader(); //  팩터리 메서드로 리더 생성

            DataTable dt = new DataTable();

            dt.Load(dr); // DataReader DataTable

            this.dataGridView1.DataSource = dt; // 출력

 

            dr.Close();

            con.Close();

        }

               

 

        // Connection - Command - DataAdapter - DataSet(읽고쓰기가능) - Fill() 패턴을 사용

        private SqlDataAdapter da2; //

        private DataTable dt2; //

        private void DisplayData2()

        {

            SqlConnection con = new SqlConnection(

                "server=.;database=AddressBook;uid=AddressBook;pwd=6750440;");

 

            SqlCommand cmd = new SqlCommand("Select * From AddressBook", con);

 

            da2 = new SqlDataAdapter(cmd);

 

            // 조회(출력) - SelectCommand

            da2.SelectCommand = cmd;

 

            // 입력(삽입) - InsertCommand

            cmd = new SqlCommand(

                "Insert Into AddressBook Values(@Name, @Mobile, @Email)", con);

            cmd.Parameters.Add("@Name", SqlDbType.VarChar, 25, "Name");

            cmd.Parameters.Add("@Mobile", SqlDbType.VarChar, 25, "Mobile");

            cmd.Parameters.Add("@Email", SqlDbType.VarChar, 25, "Email");

            da2.InsertCommand = cmd;

 

            // 수정(업데이트) - UpdateCommand

            cmd = new SqlCommand(@"

                Update AddressBook

                Set Name = @Name, Mobile = @Mobile, Email = @Email

                Where Num = @Num ", con);

            cmd.Parameters.Add("@Name", SqlDbType.VarChar, 25, "Name");

            cmd.Parameters.Add("@Mobile", SqlDbType.VarChar, 25, "Mobile");

            cmd.Parameters.Add("@Email", SqlDbType.VarChar, 25, "Email");

            cmd.Parameters.Add("@Num", SqlDbType.Int, 32, "Num");

            da2.UpdateCommand = cmd;

 

            // 삭제 - DeleteCommand

            cmd = new SqlCommand("Delete AddressBook Where Num = @Num", con);

            cmd.Parameters.Add("@Num", SqlDbType.Int, 32, "Num");

            da2.DeleteCommand = cmd;

 

            dt2 = new DataTable("AddressBook");

            da2.Fill(dt2);

            this.dataGridView2.DataSource = dt2;

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            da2.Update(dt2); // 변경 내역 적용하기

        }

    }

}

 

 

 

 

// SqlDataAdapter클래스는 Server의 데이터베이스를 CRUD할 수 있다.(Select/Insert/Update/Delete 가능하다.)

// 반면에 SqlDataReader클래스는 Server의 데이터베이스를 조회(Select)밖에 할 수 없다.

 

 

  

-------------------------------------------------------------------------------------

  

[실행결과]

--> 실행전 [SQL Server]의 [dbo.AddressBook]테이블의 화면
 





--> 아래그림의 폼에서 아래에 있는 "dataGridView"인 "dataGridView2"에서 맨 위의 레코드인 "김길동"을 "티파니"로 바꾼후 "변경사항 저장" 버튼을 누르면, 메모리상에 띄워져 있는 "dataGridView2"의 데이터가 (티파니로)변경되어 저장되고...




--> [SQL Server]의 [dbo.AddressBook]테이블의 데이터도 (티파니로) 값이 변경되어 저장된 것을 볼 수 있다.("dataGridView2"에는 "SqlDataAdapter 클래스"를 사용하여 "Server의 데이터베이스"가 "입력/수정/삭제"가 가능하다.)

 

 

Posted by holland14
: