출처 : 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();
'Programming > ASP.NET' 카테고리의 다른 글
[스크랩] javascript배열 => cs (0) | 2010.03.26 |
---|---|
[스크랩] cs=>javascript 배열만들기 (0) | 2010.03.26 |
[스크랩] UserControl , Page, MasterPage 사이 컨트롤 접근하기 (0) | 2010.03.26 |
[스크랩] GridView 에 페이징 등록하기 (0) | 2010.03.25 |
동적테이블 생성하기 (0) | 2010.03.15 |
ASP.NET 페이지 암호화 (0) | 2010.03.05 |
ASP.NET 주요 내장 개체(클래스)들 (0) | 2010.03.02 |
ListBox 데이터 바인딩 하기 (0) | 2010.02.26 |
ASP.NET 웹 폼 컨트롤 - 입력 관련 컨트롤: TextBox 컨트롤 (0) | 2010.02.19 |
웹 서버 컨트롤 이란? (0) | 2010.02.18 |