출처 : http://blog.naver.com/iammida?Redirect=Log&logNo=60041446677

1 ADO.NET

1.1 ADO.NET의 개요

▣
 
▣ADO.NET
    ◈◈ADO(Active Data Object) + .NET
 
▣▣ADO.NET의 개선 사항
    ◈◈닷넷 기반의 다양한 언어 지원
     ◈◈XML 지원
          –-프레임웍 상에서 일관된 포맷으로 지원
     ◈단절된 데이터 구조를 표준으로 사용
          -컨넥션(Connection)이 끊어진 상태에서 작업, 소형 메모리 데이터베이스 모델 지원
 
▣▣ADO.NET 관련 네임스페이스
◈     ◈System.Data
     ◈System.Data.Common
     ◈System.Data.Oledb
     ◈System.Data.SqlClient
 
 
1.2 ADO.NET의 기본 구조 I
 
 
1.2 ADO.NET의 기본 구조 II
 
 

  

 

2 SqlClient 공급자
2.1 Connection과 데이터 공급자
 
▣▣SqlClient 공급자
◈     ◈ SQL Server 공급자(SqlClient)는 OLE와 ODBC와 같은 중간계층 없이 MS-SQL 전용으로
        직접 연결되기 때문에 간단하며 효율적으로 동작한다.
◈     ◈ Microsoft SQL Server 버전 7.0 이상에 연결한다.
▣▣OleDb 공급자
◈     ◈ OLE DB 공급자는 OLE DB를 사용해서
        노출된 데이터 소스 및 Microsoft SQL Server 버전 6.x 또는 그 이전 버전에
         SQLOLEDB 즉 SQL Server용 OLE DB 공급자를 통해 연결한다.
▣▣ODBC 공급자(.NET Framework 2.0에 추가된 공급자)
◈     ◈ ODBC를 사용해서 노출된 데이터 소스에서 사용한다.
◈     ◈ System.Data.Odbc
▣▣Oracle 공급자(.NET Framework 2.0에 추가된 공급자)
◈     ◈오라클 데이터 소스에서 사용한다.(오라클 클라이언트 소프트웨어 버전 8.1.7 이상에서 지원)
◈     ◈ System.Data.Oracle
 
SqlClient 공급자의 연결(Connection)
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=pubs; User ID=sa;Password=");
conn.open();
 
OleDb 공급자의 연결(Connection)
using System.Data.OleDb;
OleDbConnection con = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/NWind.mdb");
conn.open(); 
 
 
 2.2 SqlClient 공급자의 Connection 설정하기
 
▣▣SQL DB 연결 순서
◈     ◈ 1. 네임스페이스 명시
–            - using System.Data.SqlClient;
◈     ◈ 2. Connection 객체 생성(연결 프로퍼티 설정)
–            - SqlConnection conn;
–            - conn = new SqlConnection("Server=localhost; user id=sa;password;
                                                                                 database=northwind");
◈     ◈ 3. Connecton 연결
–            - conn.Open();
◈     ◈ 4. 작업수행( SQL 쿼리 작업)
◈     ◈ 5. 연결 닫기
–            - conn.Close();
1. Database = NorthWind
2. DataSource = localhost
3. DataServerVersion = 08.00.0194
4. State = Open
5. WorkstationID = JABOOK-1
6. State = Closed
 
▣▣Connection의 속성
◈     ◈ conn.Database
◈     ◈ conn.DataSource
◈     ◈ conn.ServerVersion
◈     ◈ conn.State
◈     ◈ conn.WorkstationId
 
 
 
 
2.3 SqlCommand 클래스
 
▣▣SqlCommand 클래스
◈     ◈ DB에 필요한 명령을 전달하거나 그 결과를 받아올 때 사용하는 클래스
▣▣SqlCommand에서 사용할 수 있는 명령들
◈     ◈ 단일 값 및 레코드 셋을 반환하는 SELECT, CREATE, ALERT, DROP 같은
         DDL(Data Definition Language) 명령
◈     ◈ GRANT, DENY, REVOKE 같은 DCL(Data Control Language) 명령
◈     ◈ INSERT, UPDATE, DELETE 같은 DML(Data Modification Language) 명령
▣▣SqlCommand 클래스 주요 함수
◈     ◈ ExecuteNonQuery()
–            - SQL 문을 실행하고 처리된 행의 개수를 반환
◈     ◈ ExecuteReader()
–            - 쿼리를 Connection에 보내고 SqlDataReader를 생성
◈     ◈ ExecuteScalar()
–            - 쿼리를 실행하고 쿼리에서 반환된 결과 집합의 첫번째 행의 첫번째 열 반환
◈     ◈ ExecuteXmlReader()
–            - 쿼리를 Connection에 보내고 XmlReader 객체를 생성
 
 
 
 
2.4 SqlCommand의 ExecuteNonQuery
 
▣▣ExecuteNonQuery()
◈     ◈ 데이터베이스의 쿼리(Query) 중 Select 명령을 제외한 대부분의 명령을 처리할 수 있다.
반환 값 : 처리된 행의 개수
▣▣ExecuteNonQuery()의 사용
◈     ◈ Connection 생성 및 Open
–            - string conStr = "Server=localhost;user id=sa;password=;database=northwind";
–            - SqlConnection conn = new SqlConnection(conStr);
–            - conn.Open();
◈     ◈ SqlCommnad 생성
–            - string createQuery = "create table Address
                                       ( id int, name char(20), addr char(40))";
–            - SqlCommand comm = new SqlCommand(createQuery, conn);
◈     ◈ SqlCommand 실행
–            - comm.ExecuteNonQuery();
◈     ◈ Connection Close
–            - conn.Close();

 
 
 
 
2.5 SqlCommand의 Parameter(Insert문장)
 
▣▣SqlCommand의 Parameter
◈     ◈ 반복적인 쿼리 작업이나 쿼리가 복잡할 경우에 주로 사용한다.
▣▣Parameter 변수를 선언하는 방법
◈     ◈ string query ="Insert into Address values (@ID, @Name, @Address)";
◈     ◈ SqlCommand comm = new SqlCommand(query, conn);
▣▣Parameter 타입을 지정하는 예
◈     ◈ comm.Parameters.Add("@ID", SqlDbType.TinyInt);
◈     ◈ comm.Parameters.Add("@Name", SqlDbType.Char);
◈     ◈ comm.Parameters.Add("@Address", SqlDbType.Char);
▣▣Parameter의 값 설정
◈     ◈ comm.Parameters["@ID"].Value = 6;
◈     ◈ comm.Parameters["@Name"].Value = "HongGilDDong";
◈     ◈ comm.Parameters["@Address"].Value = "Seoul";
▣▣SqlCommand의 실행
◈     ◈ comm.ExecuteNonQuery();
 


 
 
 
 
 
 
 
 
 
2.6 SqlCommand의 ExecuteReader
 
▣▣SqlCommand의 ExecuteReader()
◈     ◈ Select 쿼리를 처리할 때 사용하는 함수
▣▣SqlDataReader를 얻기 위한 절차
◈     ◈ 1. 네임스페이스 명시
–            - using System.Data.SqlClient;
◈     ◈ 2. Connection 객체 생성 : 생성자에게 연결 정보 전달, 연결 프로퍼티 설정
–            - SqlConnection conn = new SqlConnection(Server=localhost;
                                                 user id=sa; password=; database=northwind");
◈     ◈ 3. Connecton 연결
–            - conn.Open();
◈     ◈ 4. Command 객체 생성 : 실행할 쿼리와 Connection을 인수로 함
–            - SqlCommand comm = new SqlCommand("select * from 테이블명", conn);
◈     ◈ 5. 데이터 읽어오기
–            - SqlDataReader reader = comm.ExecuteReader();
◈     ◈ 6. 작업수행
◈     ◈ 7. 연결 닫기
–            - conn.Close();
 

 
 
 
 
2.7 SqlCommand의 Parameter(Select문장)
 
▣▣데이터베이스 Connection 생성과 Open
◈     ◈ string conStr = "Server=localhost;user id=sa;password=;database=northwind";
◈     ◈ string query = "select * from Address where addr=@addr1 or addr=@addr2";
◈     ◈ SqlConnection conn = new SqlConnection(conStr);
◈     ◈ conn.Open();
▣▣Command 생성과 Parameter 타입 지정
◈     ◈ SqlCommand comm = new SqlCommand(query, conn);
◈     ◈ comm.Parameters.Add("@addr1", SqlDbType.Char);
◈     ◈ comm.Parameters.Add("@addr2", SqlDbType.Char);
▣▣Command의 Parameter 값 설정
◈     ◈ comm.Parameters["@addr1"].Value = "서울시";
◈     ◈ comm.Parameters["@addr2"].Value = "대전시";
▣▣데이터 읽어오기
◈     ◈ SqlDataReader sr = comm.ExecuteReader();
◈     ◈ while(sr.Read()){
◈     ◈ Console.WriteLine(sr.GetInt32(0)+"|"+ sr.GetString(1).Trim()+"|"+ sr.GetString(2) );
◈     ◈ }
▣▣SqlDataReader와 Connection 닫기
◈     ◈ sr.Close();
◈     ◈ conn.Close();
 
 
 
 
2.8 SqlCommand를 이용한 XmlReader
 
▣▣Connection 생성과 Open
◈     ◈ string conStr = "Server=localhost;user id=sa;password=;database=northwind";
◈     ◈ SqlConnection conn = new SqlConnection(conStr);
◈     ◈ conn.Open();
▣▣Command 생성 및 처리 그리고 XmlReader 얻기
◈     ◈ string xquery = "select * from Address FOR XML AUTO, ELEMENTS";
◈     ◈ SqlCommand xcomm = new SqlCommand(xquery, conn);
◈     ◈ XmlReader reader = reader = xcomm.ExecuteXmlReader();
▣▣그 외의 작업
◈     ◈ while (reader.Read()){
◈     ◈ //작업
◈     ◈ } 
◈     ◈ reader.Close();
◈     ◈ conn.Close();
 

위의 밑줄친 부분에 대한 설명.
 FOR XML AUTO, ELEMENTS
컬럼 이름을 태그의 이름을 사용해서 XML 데이터를 구축한다.(RAW, AUTO, EXPLICIT)
 
 
 
3 OleDb 공급자
3.1 OleDb 공급자를 이용하여 연결
 
▣▣OleDb 공급자의 Connection 생성 및 Open
◈     ◈ string myConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
◈     ◈ OleDbConnection conn = new OleDbConnection(myConnString);
◈     ◈ conn.Open();
▣▣OleDbConnection의 정보 출력
◈     ◈ Console.WriteLine("1. Database = " + conn.Database);
◈     ◈ Console.WriteLine("2. DataSource = " + conn.DataSource);
◈     ◈ Console.WriteLine("3. DataServerVersion = " + conn.ServerVersion);
◈     ◈ Console.WriteLine("4. State = " + conn.State);
◈     ◈ Console.WriteLine("5. Provider = " + conn.Provider);
▣▣OleDbConnection 닫기
◈     ◈ conn.Close();// Close Connection
◈     ◈ Console.WriteLine("6. State = " + conn.State);
1. Database =
2. DataSource = test.mdb
3. DataServerVersion = 04.00.0000
4. State = Open
5. Provider = Microsoft.Jet.OLEDB.4.0
6. State = Closed
 
 
 
 
3.2 OleDbCommand의 ExecuteNonQuery
 
▣▣SqlClient의 ExecuteNonQuery()
◈     ◈ string conStr = "Server=localhost;user id=sa;password=;database=northwind";
◈     ◈ SqlConnection conn = new SqlConnection(conStr);
◈     ◈ conn.Open();
◈     ◈ string createQuery = "create table Address (id int, name char(20), addr char(40))";
◈     ◈ SqlCommand comm = new SqlCommand(createQuery, conn);
◈     ◈ comm.ExecuteNonQuery();
◈     ◈ conn.Close();
.
▣▣OleDb의 ExecuteNonQuery()
◈     ◈ string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
◈     ◈ string createQuery = "create table Address (id int, name char(20), addr char(40))";
◈     ◈ OleDbConnection conn = new OleDbConnection(conStr);
◈     ◈ conn.Open();
◈     ◈ OleDbCommand comm = new OleDbCommand(createQuery, conn);
◈     ◈ comm.ExecuteNonQuery();
◈     ◈ conn.Close();
 
 
 
 
3.3 OleDbCommand의 Parameter(Insert)
 
▣▣OleDb Connection 생성과 Open
◈     ◈ string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=test.mdb";
◈     ◈ OleDbConnection conn = new OleDbConnection(conStr);
◈     ◈ conn.Open();
▣▣OleDbCommand의 Parameter 변수 선언
◈     ◈ string query = "Insert into Address values(@ID, @Name, @Address)";
◈     ◈ OleDbCommand comm = new OleDbCommand(query, conn);
▣▣OleDbCommand 생성과 Parameter Type설정
◈     ◈ comm.Parameters.Add("@ID", OleDbType.TinyInt);
◈     ◈ comm.Parameters.Add("@Name", OleDbType.Char);
◈     ◈ comm.Parameters.Add("@Address", OleDbType.Char);
▣▣OleDbCommand의 Parameter 값설정과 명령 실행
◈     ◈ comm.Parameters["@ID"].Value = 6;
◈     ◈ comm.Parameters["@Name"].Value = "HongGilDDong";
◈     ◈ comm.Parameters["@Address"].Value = "Seoul";
◈     ◈ comm.ExecuteNonQuery();
▣▣OleDbConnection 닫기
◈     ◈ conn.Close();
 
 
3.4 OleDbCommand의 ExecuteReader
 
▣▣OleDb 공급자의 Connection 생성 및 Open
◈     ◈ string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
◈     ◈ string query = "select * from Address";
◈     ◈ OleDbConnection conn = new OleDbConnection(conStr);
◈     ◈ conn.Open();
▣▣OleDb 공급자의 Command 생성 및 DataReader 얻기
◈     ◈ OleDbCommand comm = new OleDbCommand(query, conn);
◈     ◈ OleDbDataReader sr = comm.ExecuteReader();
▣▣그 외의 작업
◈     ◈ while(sr.Read()){
◈     ◈ Console.Write(sr.GetInt32(0)+"|");
◈     ◈ Console.Write(sr.GetString(1).Trim()+"|");
◈     ◈ Console.Write(sr.GetString(2));
◈     ◈ Console.WriteLine();
◈     ◈ }
◈     ◈ sr.Close();
◈     ◈ conn.Close(); 
 

+ Recent posts