Home Full Site
C# DataSet 클래스

DataSet 클래스는 클라이언트 메모리 상에 존재하는 테이블들을 가지며, 서버와의 연결을 유지하지 않는다. DataSet 클래스는 개발자가 직접 모든 테이블 구조 만들고 데이타 삽입등을 할 수 있으나, 일반적으로 DataAdapter (예: SqlDataAdapter)를 이용하여 데이타를 서버로부터 가져와 메모리상의 DataSet에 할당 후 사용한다. DataSet 객체는 DataGridView같은 그리드에 데이타를 바인딩하여 사용할 수 있다.

예제

SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Tab1", conn);

// DataSet에 테이블 데이타를 넣음
DataSet ds = new DataSet();
adapter.Fill(ds, "Tab1");        

conn.Close();



C# DataTable 클래스

DataTable 클래스는 메모리상에 테이블을 표현하는 클래스로서, DataSet.Tables 컬렉션에 포함되어 사용되는 경우가 많다. DataSet은 여러개의 DataTable들을 포함하여 마치 메모리상의 간이 데이타베이스와 같은 개념으로 이해될 수 있다. DataSet에 있는 DataTable을 엑세스하기 위해서는 dataSet.Tables[0]과 같이 인덱스를 사용할 수 있으며, 아래 예와 같이 테이블명을 이용해서 엑세스할 수도 있다.

DataSet ds = new DataSet();
adapter.Fill(ds, "Tab1");
DataTable dt = ds.Tables["Tab1"];



C# DataView 클래스

DataView 클래스는 DataTable객체를 소트하거나 필터링할 때 혹은 편집, 검색등을 할 때 사용된다. 즉, 만약 서버로부터 데이타를 가져다 클라인언트에 놓고 일부 데이타만 보여주는 필터링 혹은 데이타를 소트해서 보여주는 등의 일들을 할 때는 DataView를 사용할 수 있다. DataTable은 기본적으로 DefaultView라고 하는 속성을 가지고 있는데, 이는 DataTable에서 기본으로 제공하는 DataView로서 이를 통해 소트나 필터링 등을 할 수 있다.

예제

DataSet ds = new DataSet();

using (SqlConnection conn = new SqlConnection(cn))
{
   conn.Open();
   SqlDataAdapter adpt = new SqlDataAdapter("SELECT * FROM AAA", conn);
   adpt.Fill(ds, "AAA");
}

// DataTable.DefaultView를 사용하여
// 필터링 (name컬럼이 L로 시직하는 경우)
DataTable dt = ds.Tables["AAA"];
dt.DefaultView.RowFilter = "name like 'L%'";

dataGridView1.DataSource = dt;



© csharpstudy.com