본문 바로가기

.NET/ADO.NET

ADO.NET Relation 관련 예제

반응형
DS.Relation.Add(

7가지의 오버로딩



using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
//DataSet 생성
DataSet ds = new DataSet("publication");

//DataTable 생성 
DataTable publicTable = new DataTable("publics");
publicTable.Columns.Add(new DataColumn("publicID", typeof(int)));
publicTable.Columns.Add(new DataColumn("Name", typeof(string)));

//테이블에 제약조건 설정 
publicTable.Constraints.Add(
new UniqueConstraint("PK_Publics", publicTable.Columns[0]));
//기본키 설정 
publicTable.PrimaryKey = new DataColumn[] { publicTable.Columns[0] };

DataTable peopleTable = new DataTable("People");
peopleTable.Columns.Add(new DataColumn("PeopleID", typeof(int)));
peopleTable.Columns.Add(new DataColumn("Name", typeof(string)));
peopleTable.Columns.Add(new DataColumn("publicID", typeof(int)));
peopleTable.Constraints.Add(
new UniqueConstraint("PK_People", peopleTable.Columns[0]));
peopleTable.PrimaryKey = new DataColumn[] { peopleTable.Columns[0] };

//DataSet 에 DataTable 추가 
ds.Tables.Add(publicTable);
ds.Tables.Add(peopleTable); 

//관계설정

ds.Relations.Add("Peoples", ds.Tables["publics"].Columns["publicID"],

ds.Tables["People"].Columns["publicID"]); 
     
//DataTable에 자료 입력
DataRow publicRow = ds.Tables["publics"].NewRow();
publicRow["publicID"] =1 ;
publicRow["Name"] = "Seoul";
ds.Tables["publics"].Rows.Add(publicRow);

publicRow = ds.Tables["publics"].NewRow();
publicRow["publicID"] = 2;
publicRow["Name"] = "Pusan";
ds.Tables["publics"].Rows.Add(publicRow);


DataRow peopleRow = ds.Tables["People"].NewRow();
peopleRow["PeopleID"] = 1;
peopleRow["Name"] = "Namil Park";
peopleRow["publicID"] = 1;
ds.Tables["People"].Rows.Add(peopleRow);

peopleRow = ds.Tables["People"].NewRow ( ) ; 
peopleRow["PeopleID" ] = 2 ; 
peopleRow["Name"] = "JiSun" ; 
peopleRow["publicID"] = 1
ds.Tables["People"].Rows.Add ( peopleRow ) ; 
peopleRow = ds.Tables["People"].NewRow ( ) ; 
peopleRow["PeopleID" ] = 3 ; 
peopleRow["Name"] = "Kate" ; 
peopleRow["publicID"] = 1
ds.Tables["People"].Rows.Add ( peopleRow ) ;

peopleRow = ds.Tables["People"].NewRow();
peopleRow["PeopleID"] = 4;
peopleRow["Name"] = "Kwangsik";
peopleRow["publicID"] = 2;
ds.Tables["People"].Rows.Add(peopleRow);

peopleRow = ds.Tables["People"].NewRow();
peopleRow["PeopleID"] = 5;
peopleRow["Name"] = "chonje";
peopleRow["publicID"] = 2;
ds.Tables["People"].Rows.Add(peopleRow);


foreach (DataRow publisher in ds.Tables["publics"].Rows)
{
DataRow[] subRelay = publisher.GetChildRows("Peoples");
int pepleCount = subRelay.Length;
Console.WriteLine("{0} 출신 : {1} 명 ",publisher["Name"], pepleCount);
foreach (DataRow thePeople in subRelay)
Console.WriteLine("성명 : {0}", thePeople["Name"]);
}

foreach (DataRow people in ds.Tables["People"].Rows)
{
DataRow[] parents = people.GetParentRows("Peoples");
foreach (DataRow publisher in parents)
Console.WriteLine("이름 : {0} ,{1}의 출신" ,people["Name"],publisher["Name"]);
}
}
}
}