[C# 강좌 32강] ADO (데이타베이스) - 2

공부/C#  2012.10.11 09:00



안녕하세요 개발자 명월입니다.

저번 포스팅에서는 Reader를 이용한 연결지향형을 알아보았습니다. 이번 포스팅에서는 Adapter 를 이용한 비연결지향형을 알아보겠습니다. Reader 에서는 Connection을 열어서 레코드 하나한 읽어드린 형태로 데이터를 가져왔습니다.Adapter 는 하나한 가져오는 것이 아니고 데이터를 통채로 가져온다고 생각하시면 됩니다.

 

MSDN을 확인하겠습니다.

MSDN -  DataAdapter 바로가기

             DataSet 바로가기

 

 

 

역시 설명보다는 예제 하나가 이해하기 빠르겠습니다.

먼저 데이터 예제는 MSSQL 강좌에서 설명했던 예제로 사용하겠습니다.

[MSSQL 강좌 4강] 테이블 생성과 데이터 삽입 바로가기

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Data;
  5 using System.Data.SqlClient;
  6
  7 namespace Blog20121010
  8 {
  9     class Program
10     {
11         static void Main(string[] args)
12         {
13             new Program();
14             Console.WriteLine("Press Any Key...");
15             Console.ReadLine();
16         }
17         public Program() {
18             String con_name = "Data Source=TAMAI-PC\\SQLEXPRESS;Database=Myung;User Id=sa;Password=1111";
19             SqlConnection conn = new SqlConnection(con_name);
20             SqlDataAdapter sda = new SqlDataAdapter();
21             sda.SelectCommand = new SqlCommand("select * from Test_table",conn);
22             DataSet DS = new DataSet();
23             sda.Fill(DS);
24             Console.WriteLine("idx\tName\t학교\t학년");
25             for (int i = 0; i < DS.Tables[0].Rows.Count; i++) {
26                 String a = DS.Tables[0].Rows[i].ItemArray[0].ToString();
27                 String b = DS.Tables[0].Rows[i].ItemArray[1].ToString();
28                 String c = DS.Tables[0].Rows[i].ItemArray[2].ToString();
29                 String d = DS.Tables[0].Rows[i].ItemArray[3].ToString();
30                 Console.WriteLine("{0}\t{1}\t{2}\t{3}",a,b,c,d);
31             }
32         }
33     }
34 }
35

 

 

 

결과는 연결지향형과 같습니다.

여기까지 DataAdapter 로 데이터 읽어들이기 입니다. 실제로 예제를 따라 해 보시면 Reader 와 Adapter 는 큰 차이가 없습니다. 어떻게 보면 DataAdapter 가 조금은 복잡하게 느껴질지도 모릅니다. 데이터가 작아서 속도 차이도 크게 느끼지는 못했지만 10만건 100만건을 운용하다 보면 adapter 가 조금은 더 늦게 느껴집니다. 그 이유는 Adapter 가 느리기 때문이 아니라 방식 차이이기 때문입니다.

 

Reader 는 데이터 베이스에 연결되어있는 상태로 커넥션이 종료 될때까지(Close) 커넥션을 유지하고 있습니다. 그에 비해 Adapter 는 커넥션이 없이 그냥 Fill 로서 데이터가 담겨지는 형태로 볼 수 있습니다.

 


댓글 0개가 달렸습니다.
댓글쓰기