DataSet은 C#에서 데이터 관리를 위한 강력한 데이터 구조입니다. DataSet은 .NET의 System.Data 네임스페이스에 포함되어 있으며, 메모리 내에서 데이터를 관리하는 데 사용됩니다. 여러 데이터 테이블을 하나의 객체로 그룹화하여 데이터 관계를 유지하고, 데이터 소스와 독립적으로 데이터를 조작할 수 있게 합니다.
주요 특징
다중 테이블: DataSet은 여러 개의 DataTable 객체를 포함할 수 있습니다.
관계 정의: 테이블 간의 관계를 정의할 수 있습니다 (DataRelation 객체를 사용).
독립성: 데이터 소스와 독립적으로 데이터를 관리할 수 있습니다. 데이터를 데이터베이스와 동기화하거나 분리하여 사용할 수 있습니다.
XML 통합: XML 형식으로 데이터를 읽고 쓸 수 있습니다.
데이터 조작: 필터링, 정렬, 조회 등의 다양한 데이터 조작 작업을 지원합니다.
주요 구성 요소
DataSet: 데이터의 컬렉션을 나타내는 컨테이너입니다.
DataTable: DataSet 내의 단일 테이블을 나타냅니다.
DataColumn: DataTable의 열을 나타냅니다.
DataRow: DataTable의 행을 나타냅니다.
DataRelation: 두 테이블 간의 관계를 정의합니다.
using System;
using System.Data;
class Program
{
static void Main()
{
// DataSet 생성
DataSet dataSet = new DataSet("Library");
// Books 테이블 생성
DataTable booksTable = new DataTable("Books");
booksTable.Columns.Add(new DataColumn("BookID", typeof(int)));
booksTable.Columns.Add(new DataColumn("Title", typeof(string)));
dataSet.Tables.Add(booksTable);
// Authors 테이블 생성
DataTable authorsTable = new DataTable("Authors");
authorsTable.Columns.Add(new DataColumn("AuthorID", typeof(int)));
authorsTable.Columns.Add(new DataColumn("Name", typeof(string)));
dataSet.Tables.Add(authorsTable);
// 관계 정의
DataRelation relation = new DataRelation(
"BookAuthor",
authorsTable.Columns["AuthorID"],
booksTable.Columns["BookID"]);
dataSet.Relations.Add(relation);
// 데이터 추가
DataRow authorRow = authorsTable.NewRow();
authorRow["AuthorID"] = 1;
authorRow["Name"] = "George Orwell";
authorsTable.Rows.Add(authorRow);
DataRow bookRow = booksTable.NewRow();
bookRow["BookID"] = 1;
bookRow["Title"] = "1984";
booksTable.Rows.Add(bookRow);
// 데이터 출력
foreach (DataRow row in authorsTable.Rows)
{
Console.WriteLine($"Author: {row["Name"]}");
foreach (DataRow childRow in row.GetChildRows("BookAuthor"))
{
Console.WriteLine($" Book: {childRow["Title"]}");
}
}
}
}