프로그래밍 기술/SQL과 ADO.NET

[ADO.NET] DataTable 클래스 개체 생성과 테이블 구조 설계

언제나휴일 2016. 4. 22. 22:23
반응형

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;

 

 

Program.cs


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);

    }

}

[소스] 테이블 생성 및 구조 설계 예제 코드

 

 테이블 생성 및 구조 설계 실행 결과


[그림] 실행 결과

반응형