출처 : 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