방법: 관련 DataTable의 레코드에 액세스
업데이트: 2007년 11월
데이터 집합의 테이블이 서로 관련되어 있는 경우에는 DataRelation 개체를 통해 다른 테이블의 관련 레코드를 사용할 수 있습니다. 예를 들어, Customers 및 Orders 테이블이 포함된 데이터 집합을 사용할 수 있습니다.
DataRelation 개체를 사용하여 부모 테이블에 있는 DataRow의 GetChildRows 메서드를 호출하여 관련 레코드를 찾을 수 있습니다. 이 메서드는 관련된 자식 레코드의 배열을 반환합니다. 또는 자식 테이블에 있는 DataRow의 GetParentRow 메서드를 호출할 수 있습니다. 이 메서드는 부모 테이블에서 단일 DataRow를 반환합니다.
이 도움말 페이지에서는 형식화된 데이터 집합을 사용하는 예제를 제공합니다. 형식화되지 않은 데이터 집합에서 관계를 탐색하는 방법에 대한 자세한 내용은 DataRelations 탐색(ADO.NET)을 참조하십시오.
참고: |
---|
Windows Forms 응용 프로그램에서 작업하는 중이며 데이터 바인딩 기능을 사용하여 데이터를 표시하는 경우 디자이너에서 생성된 폼이 응용 프로그램에 충분한 기능을 제공할 수 있습니다. 자세한 내용은 Windows 응용 프로그램에서 폼에 데이터 표시의 페이지에서 특히 방법: Windows 응용 프로그램에서 관련 데이터 표시 및 연습: Windows 응용 프로그램에서 폼에 관련 데이터 표시를 참조하십시오. |
다음 코드 예제에서는 형식화된 데이터 집합의 관계를 위쪽 및 아래쪽으로 탐색하는 방법을 보여 줍니다. 형식화된 DataRow (NorthwindDataSet.OrdersRow) 및 생성된 FindByPrimaryKey (FindByCustomerID) 메서드를 사용하여 원하는 행을 찾고 관련된 레코드를 반환합니다. 이 예제는 다음 사항이 있는 경우에만 올바르게 컴파일되고 실행됩니다.
Customers 테이블이 있는 이름이 NorthwindDataSet인 데이터 집합의 인스턴스
Orders 테이블
코드의 범위에 사용할 수 있는 두 테이블을 관련시키는 FK_Orders_Customers라는 관계
또한 두 테이블 모두 반환될 레코드에 대한 데이터로 채워져야 합니다.
관련 레코드에 액세스
선택된 부모 레코드의 자식 레코드를 반환하려면
특정 Customers 데이터 행의 GetChildRows 메서드를 호출하고 Orders 테이블에서 행의 배열을 반환합니다.
Dim customerID As String = "ALFKI" Dim orders() As NorthwindDataSet.OrdersRow orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID). _ GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow()) MessageBox.Show(orders.Length.ToString())
string custID = "ALFKI"; NorthwindDataSet.OrdersRow[] orders; orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers. FindByCustomerID(custID).GetChildRows("FK_Orders_Customers"); MessageBox.Show(orders.Length.ToString());
선택된 자식 레코드의 부모 레코드를 반환하려면
특정 Orders 데이터 행의 GetParentRow 메서드를 호출하고 Customers 테이블에서 단일 행을 반환합니다.
Dim orderID As Integer = 10707 Dim customer As NorthwindDataSet.CustomersRow customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID). _ GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow) MessageBox.Show(customer.CompanyName)
int orderID = 10707; NorthwindDataSet.CustomersRow customer; customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders. FindByOrderID(orderID).GetParentRow("FK_Orders_Customers"); MessageBox.Show(customer.CompanyName);