본문 바로가기
Languages/C#

C# DataTable 사용법(2)

by 반도체는 프로그래밍을 좋아해 2023. 4. 11.
728x90

C#의 DataTable 클래스에는 다양한 함수가 있습니다. 이 중에서도 대표적인 함수들과 그 예제를 소개하겠습니다.

 1.DataTable.Rows 속성

DataTable.Rows 속성은 DataRowCollection 클래스를 반환합니다. 이 속성을 사용하여 DataTable에 있는 모든 행을 가져올 수 있습니다.

DataTable dt = new DataTable("MyTable");
// 행과 열이 있다고 가정
dt.Rows()

 2. DataTable.Columns 속성

DataTable.Columns 속성은 DataColumnCollection 클래스를 반환합니다. 이 속성을 사용하여 DataTable에 있는 모든 열을 가져올 수 있습니다.

DataTable dt = new DataTable("MyTable");
// 행과 열이 있다고 가정
dt.Columns()

 


3. DataTable.Select 메서드

DataTable.Select 메서드는 지정된 조건에 맞는 DataRow 배열을 반환합니다. 이 메서드를 사용하여 DataTable에서 원하는 행을 검색할 수 있습니다.

DataTable dt = new DataTable("MyTable");
// 행과 열이 있다고 가정
DataRow[] rows = dt.Select("Id = 1");

728x90

4. DataTable.Compute 메서드

DataTable.Compute 메서드는 지정된 식에 따라 계산된 결과를 반환합니다. 이 메서드를 사용하여 DataTable에서 원하는 데이터를 계산할 수 있습니다.

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Price", typeof(int));

table.Rows.Add(1, "Apple", 1000);
table.Rows.Add(2, "Banana", 2000);
table.Rows.Add(3, "Orange", 1500);

// Price 열의 평균값 계산
double averagePrice = (double)table.Compute("AVG(Price)", "");

Console.WriteLine("Average price: {0}", averagePrice);

5. DataTable.Clone 메서드

Clone 함수는 DataTable 객체를 복제합니다. 복제된 객체는 같은 데이터를 가지지만, 새로운 메모리 공간을 사용합니다. 예제를 통해 살펴보겠습니다

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "John");
dt.Rows.Add(2, "Mary");

// DataTable 객체 복제
DataTable clonedDt = dt.Clone();

6. DataTable.ImportRow 메서드

ImportRow 함수는 다른 DataTable 객체의 특정 행을 현재 DataTable 객체에 추가합니다. 추가될 행은 DataRow 객체로 지정합니다. 예제를 통해 살펴보겠습니다.

DataTable dt1 = new DataTable();
dt1.Columns.Add("ID", typeof(int));
dt1.Columns.Add("Name", typeof(string));
dt1.Rows.Add(1, "John");

DataTable dt2 = new DataTable();
dt2.Columns.Add("ID", typeof(int));
dt2.Columns.Add("Name", typeof(string));
dt2.Rows.Add(2, "Mary");

// dt1에 dt2의 첫 번째 행을 추가
dt1.ImportRow(dt2.Rows[0]);

7. DataTable.Copy 메서드

Copy 함수는 DataTable 객체를 복제합니다. 복제된 객체는 같은 데이터를 가지지만, 새로운 메모리 공간을 사용합니다. Clone 함수와의 차이점은, Copy 함수는 PrimaryKey, Constraints 등의 제약 조건도 함께 복제합니다. 예제를 통해 살펴보겠습니다.

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "John");
dt.Rows.Add(2, "Mary");

// DataTable 객체 복제
DataTable copiedDt = dt.Copy();

8. DataTable.Reset 메서드

Reset 함수는 DataTable 객체의 모든 데이터를 제거합니다. 예제를 통해 살펴보겠습니다.

DataTable dt = new DataTable();
// 행과 열이 있다고 가정
dt.Reset();

9. DataTable.Clear 메서드

Clear 함수는 DataTable 객체의 모든 행을 제거합니다. 열은 그대로 유지됩니다. 예제를 통해 살펴보겠습니다.

DataTable dt = new DataTable();
// 행과 열이 있다고 가정
dt.Clear();

10. DataTable.ReadXml 메서드

DataTable은 XML 형식으로 데이터를 가져오고 내보낼 수 있습니다. 이를 통해 파일 또는 웹 서비스 등에서 데이터를 가져와서 DataTable에 로드하거나 DataTable의 데이터를 XML 형식으로 내보내는 등 다양한 활용이 가능합니다.

DataTable은 ReadXml() 메서드를 사용하여 XML 형식으로 저장된 데이터를 가져올 수 있습니다. 이 메서드는 파일, 문자열 또는 스트림 형태의 XML 데이터를 읽어와 DataTable에 로드합니다.

예를 들어, 다음과 같은 XML 파일이 있다고 가정해 봅시다.

<?xml version="1.0" encoding="UTF-8"?>
<Books>
  <Book>
    <Title>The Catcher in the Rye</Title>
    <Author>J.D. Salinger</Author>
    <Year>1951</Year>
  </Book>
  <Book>
    <Title>To Kill a Mockingbird</Title>
    <Author>Harper Lee</Author>
    <Year>1960</Year>
  </Book>
</Books>

이 파일을 DataTable로 가져오는 예제는 다음과 같습니다.

DataTable dt = new DataTable();
dt.ReadXml("books.xml");

이제 dt 변수에는 Books 테이블이 생성되고, 그 안에 Book의 정보들이 각각의 행으로 추가됩니다.


11. DataTable.WriteXml 메서드

DataTable은 WriteXml() 메서드를 사용하여 XML 형식으로 데이터를 내보낼 수 있습니다. 이 메서드는 파일, 문자열 또는 스트림 형태의 XML 데이터를 생성하고 DataTable의 데이터를 해당 형식으로 변환하여 저장합니다.

예를 들어, 위에서 생성한 DataTable을 XML 파일로 내보내는 예제는 다음과 같습니다.

dt.WriteXml("output.xml");

이 코드를 실행하면 output.xml 파일이 생성되고, 그 안에 DataTable의 데이터가 XML 형식으로 저장됩니다. 이를 다시 ReadXml() 메서드를 사용하여 읽어들일 수 있습니다. *해당 경로는 직접 지정해줘야합니다.

MSDN Reference : https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0

 

DataTable 클래스 (System.Data)

메모리 내 데이터의 한 테이블을 나타냅니다.

learn.microsoft.com

 

728x90