(교재실습) (DataAdapter 연습)
.NET프로그래밍/ADO.NET 2009. 9. 30. 14:57 |
* "윈폼"에서 '새 프로젝트 만들기'로 프로젝트 실행
==> 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의 데이터베이스"가 "입력/수정/삭제"가 가능하다.)
'.NET프로그래밍 > ADO.NET' 카테고리의 다른 글
WinBinding(SqlDataAdapter클래스 내용에서 보충) (0) | 2009.09.30 |
---|---|
(교재실습) WinCommandBuilder(SqlCommandBuilder 클래스) (0) | 2009.09.30 |
25. 관계와 제약조건걸기(DataRelation 클래스와 Constraints) (0) | 2009.09.30 |
(교재실습) MakeDataSet(DateSet연습) (0) | 2009.09.30 |
(교재실습) MakeTable(DataTable / DataColumn / DataRow 연습) (0) | 2009.09.29 |