DataTable
ADO.NET에서는 논리적인 데이터 집합을 디자인하고 데이터를 관리할 수 있는 DataTable 클래스를 제공하고 있습니다. DataTable은 DataSet을 구성하는 주요 개체로 프로그램 메모리 상의 한 개의 테이블입니다.
여기에서는 DataTable 개체를 생성하여 테이블을 설계하고 해당 개체를 이용하여 데이터를 관리하는 방법을 살펴볼게요.
▷클래스 상속 계층
System.Object
System.ComponentModel.MarshalByValueComponent
System.Data.DataTable
DataTable 개체 생성과 테이블 구조 설계
DataTable은 개체를 생성한 후에 테이블의 구조를 설계한 후에 사용합니다. 테이블의 구조를 설계한다는 것은 열을 추가하는 것과 기타 테이블 속성을 설정하는 것을 말합니다.
DataTable 클래스에서는 public 액세스 지정으로 설정한 세 가지 생성자를 제공합니다.
publid DataTable ( );
publid DataTable ( string table_name);
publid DataTable ( string table_name, string namespace);
DataTable을 생성한 이후에 구조 설계할 때는 DataColumn 개체를 생성하여 DataTable 개체에 추가하는 형태로 진행합니다.
DataColumn
DataColumn 클래스는 DataTable의 구조를 정의할 때 사용하는 열의 스키마입니다.
DataColumn 클래스에서 제공하는 생성자는 다음과 같습니다.
public DataColumn ( );
public DataColumn ( string col_name);
public DataColumn ( string col_name, Type data_type);
public DataColumn ( string col_name, Type data_type, string expr); //열 생성 사용식
public DataColumn ( string col_name, Type data_type, string expr, MappingType type);
DataColumn 클래스에 제공하는 주요 속성은 다음과 같습니다.
속성 |
가져오기/설정하기 |
설명 |
AllowDBNull |
가져오기/설정하기 |
null 허용 여부 |
AutoIncrement |
가져오기/설정하기 |
열 값이 자동으로 증가 여부 |
AutoIncrementSeed |
가져오기/설정하기 |
AutoIncrement 속성이 true 일 때 열의 시작 값 (기본값은 0) |
AutoIncrementStep |
가져오기/설정하기 |
AutoIncrement 속성이 true 일 때 열 값의 증가하는 폭 |
ColumnName |
가져오기/설정하기 |
열의 이름 |
DataType |
가져오기/설정하기 |
열의 데이터 형식 |
DefaultValue |
가져오기/설정하기 |
기본 값 |
Unique |
가져오기/설정하기 |
각 행에 있는 값이 고유해야 하는지 여부 |
[표] DataColumn 속성
예제
이제 DataTable 개체를 생성하고 테이블 구조를 설계하는 예제 코드를 작성해 봅시다.
먼저 DataTable 개체를 생성합니다.
DataTable dt = new DataTable("Books");
DataColumn 개체를 생성하고 속성을 설정한 후에 DataTable 개체의 Columns 컬렉션 속성에 추가합니다.
DataColumn dc_title = new DataColumn();
dc_title.ColumnName = "Title";
dc_title.DataType = typeof(string);
dc_title.AllowDBNull = false;
dt.Columns.Add(dc_title);
만약 DataTable에 주요 키를 설정하려면 DataTable 개체의 PrimaryKey 속성에 주요 키로 사용할 컬럼 배열로 설정합니다.
DataColumn[] pkeys = new DataColumn[1];
pkeys[0] = dc_isbn;
dt.PrimaryKey = pkeys;
static void Main(string[] args) { DataTable dt = new DataTable("Books"); DesingTable(dt); ViewAll(dt); } private static void DesingTable(DataTable dt) { DataColumn dc_title = new DataColumn(); dc_title.ColumnName = "Title"; dc_title.DataType = typeof(string); dc_title.AllowDBNull = false; dt.Columns.Add(dc_title);
DataColumn dc_isbn = new DataColumn("ISBN", typeof(string)); dc_isbn.Unique = true; dc_isbn.AllowDBNull = false; dt.Columns.Add(dc_isbn);
DataColumn dc_author = new DataColumn(); dc_author.ColumnName = "Author"; dc_author.DataType = typeof(string); dc_author.AllowDBNull = false; dt.Columns.Add(dc_author);
DataColumn dc_price = new DataColumn(); dc_price.ColumnName = "Price"; dc_price.DataType = typeof(int); dc_price.AllowDBNull = false; dt.Columns.Add(dc_price);
DataColumn[] pkeys = new DataColumn[1]; pkeys[0] = dc_isbn; dt.PrimaryKey = pkeys; }
private static void ViewAll(DataTable dt) { Console.WriteLine("테이블 명: {0}", dt.TableName); Console.WriteLine("컬럼 개수: {0}", dt.Columns.Count); foreach (DataColumn dc in dt.Columns) { Console.WriteLine("{0}:{1}", dc.ColumnName,dc.DataType); } } |
[소스] 테이블 생성 및 구조 설계 예제 코드
[그림] 실행 결과
'프로그래밍 기술 > SQL과 ADO.NET' 카테고리의 다른 글
[ADO.NET] DataView 클래스를 사용 예 - 도서 관리 프로그램 (0) | 2016.04.22 |
---|---|
[ADO.NET] DataView (0) | 2016.04.22 |
[ADO.NET] DataSet과 XML을 이용한 출판사 별 도서 관리 프로그램 만들기 (0) | 2016.04.22 |
[ADO.NET] DataTable 클래스와 XML을 이용한 도서 관리 프로그램 만들기 (0) | 2016.04.22 |
[ADO.NET] DataTable 개체에 행 추가 (0) | 2016.04.22 |
[MSSQL] 저장 프로시저 만들기 실습 (0) | 2016.04.22 |
서버 탐색기를 이용하여 SQL 저장 프로시저 사용하기 (0) | 2016.04.22 |
[ADO.NET] SqlParameter 사용 예 - 저장 프로시저를 이용하여 도서 추가 (0) | 2016.04.22 |
[ADO.NET] SqlParameter 클래스 사용 예 - 도서 추가 (0) | 2016.04.22 |
[ADO.NET] SqlParameter 클래스 생성자, 속성 (0) | 2016.04.22 |