비고
클래스 및 관련 클래스는 DataSet 2000년대 초반의 레거시 .NET Framework 기술로, 애플리케이션이 데이터베이스와 연결이 끊긴 동안 애플리케이션이 메모리의 데이터로 작업할 수 있도록 합니다. 이 기술은 사용자가 데이터를 수정하고 변경 내용을 데이터베이스에 다시 유지할 수 있도록 하는 앱에 특히 유용합니다. 데이터 세트는 입증된 성공적인 기술이지만 새 .NET 애플리케이션에 권장되는 방법은 Entity Framework Core를 사용하는 것입니다. Entity Framework는 테이블 형식 데이터를 개체 모델로 사용하는 보다 자연스러운 방법을 제공하며 더 간단한 프로그래밍 인터페이스를 제공합니다.
이 자습서에서는 한 양식에서 다른 양식으로 데이터를 전달하기 위한 단계별 지침을 제공합니다. Northwind 샘플 데이터베이스의 고객 및 주문 테이블을 사용하면 하나의 폼을 통해 고객을 선택할 수 있고 두 번째 양식에는 선택한 고객의 주문이 표시됩니다. 이 자습서에서는 첫 번째 양식에서 데이터를 받는 두 번째 양식에 메서드를 만드는 방법을 보여 줍니다.
이 자습서에서는 다음 작업을 완료합니다.
- 새 Windows Forms 앱(.NET Framework) 프로젝트를 만듭니다.
- 데이터 원본 구성 마법사를 사용하여 데이터 세트를 만들고 구성합니다.
- 데이터 원본 창에서 항목을 끌 때 폼에서 만들 컨트롤을 선택합니다. 자세한 내용은 데이터 원본 창에서 끌 때 만들 컨트롤 설정을 참조하세요.
- 데이터 원본 창에서 폼으로 항목을 끌어 데이터 바인딩된 컨트롤을 만듭니다.
- 데이터를 표시하는 표가 있는 두 번째 폼을 만듭니다.
- 특정 고객의 주문을 가져오는
TableAdapter
쿼리를 만듭니다. - 양식 간에 데이터를 전달합니다.
비고
이 자습서에서는 양식 간에 데이터를 전달하는 한 가지 방법만 보여 줍니다. 데이터를 받을 두 번째 생성자를 만들거나 첫 번째 폼의 데이터로 설정할 수 있는 공용 속성을 만드는 등 폼에 데이터를 전달하는 다른 옵션이 있습니다.
필수 조건
Visual Studio에 설치된 .NET 데스크톱 개발및 데이터 스토리지 및 처리 워크로드입니다. 설치하려면 Visual Studio 설치 관리자를 열고 사용하려는 Visual Studio 버전 옆에 있는 수정 또는 추가>수정을 선택합니다. 자세한 내용은 Visual Studio 수정을 참조하세요.
SQL Server 다운로드 페이지 또는 Visual Studio 설치 관리자를 통해 데이터 스토리지 및 처리 워크로드의 일부로 설치된 SQL Server Express 2019 LocalDB입니다.
다음 단계에 따라 만든 Northwind 샘플 데이터베이스입니다.
Visual Studio의 보기 메뉴에서 SQL Server 개체 탐색기 창을 선택하여 엽니다. SQL Server 개체 탐색기는 데이터 스토리지 및 처리 워크로드의 일부로 설치됩니다.
SQL Server 노드를 확장하고 LocalDB 인스턴스를 마우스 오른쪽 단추로 클릭한 다음 새 쿼리를 선택하여 쿼리 편집기 창을 엽니다.
Northwind Transact-SQL 스크립트를 클립보드에 복사합니다. 이 T-SQL 스크립트는 Northwind 데이터베이스를 만들고 데이터로 채웁니다.
T-SQL 스크립트를 쿼리 편집기에 붙여넣은 다음 창 맨 위에 있는 실행을 선택하여 Northwind 데이터베이스를 만듭니다.
Windows Forms 앱 프로젝트 만들기
Visual Studio의 파일 메뉴에서 새>프로젝트를 선택합니다.
모든 언어 드롭다운 목록에서 C# 또는 Visual Basic을 선택하고, 모든 플랫폼 드롭다운 목록에서 Windows를 선택하고, 모든 프로젝트 형식 목록에서 데스크톱을 선택합니다.
프로젝트 템플릿 목록에서 Windows Forms 앱(.NET Framework) 을 선택한 다음, 다음을 선택합니다.
프로젝트 이름을 PassingDataBetweenForms로 지정하고 다음을 선택한 다음 만들기를 선택합니다.
PassingDataBetweenForms 프로젝트가 만들어지고 솔루션 탐색기에 추가됩니다. Form1의 디자이너 보기가 편집기에서 나타납니다.
데이터 원본 만들기
Visual Studio 메뉴에서 프로젝트> 창을 엽니다.
데이터 원본 창에서 새 데이터 원본 추가를 선택하여 데이터 원본 구성 마법사를 시작합니다.
데이터 원본 유형 선택 페이지에서 데이터베이스를 선택한 다음, 다음을 선택합니다.
데이터베이스 모델 선택 페이지에서 데이터 세트가 지정되었는지 확인하고 다음을 선택합니다.
데이터 연결 선택 페이지에서 Northwind 샘플 데이터베이스에 대한 데이터 연결을 이미 사용할 수 있는 경우 해당 데이터베이스를 선택하고 데이터베이스 개체 선택 단계를 진행합니다. 그렇지 않으면 새 연결을 선택합니다.
데이터 원본 선택 화면에서 Microsoft SQL Server 데이터베이스 파일을선택한 다음 계속을 선택합니다.
연결 추가 화면에서 찾아보기를 선택하고 northwnd.mdf 파일을 찾아 선택한 다음 열기를 선택합니다.
Windows 인증을 선택하거나 SQL Server 인증을 선택하고 사용자 이름과 암호를 제공하여 데이터베이스에 액세스합니다.
연결 테스트를 선택하여 연결을 테스트합니다. 연결에 성공하면 확인을 선택합니다.
데이터 연결 선택 페이지에서 데이터베이스 파일이 표시되는지 확인하고 다음을 선택합니다.
팝업 질문에 대해 아니요 를 선택합니다. 파일을 프로젝트에 복사하고 연결을 수정하시겠습니까?
애플리케이션 구성 파일 페이지에 연결 문자열 저장 페이지에서 예를 선택합니다. 연결 이름을 NorthwindConnectionString으로 지정하고 다음을 선택합니다.
데이터베이스 개체 선택 페이지에서 테이블 노드를 확장하고, 고객 및 주문 테이블을 선택하고, 데이터 세트의 이름을 NorthwindDataSet로 지정한 다음, 마침을 선택합니다.
NorthwindDataSet이 프로젝트에 추가되고 고객 및 주문 테이블이 데이터 원본 창에 표시됩니다.
첫 번째 양식 채우기
데이터 바인딩된 그리드를 만들려면 데이터 원본 창에서 Form1로 고객 노드를 끕니다.
DataGridView 레코드 탐색을 BindingNavigator 위한 컨트롤 및 도구 모음이 Form1에 표시됩니다. NorthwindDataSet ,
CustomersTableAdapter
및 BindingSourceBindingNavigator 구성 요소 트레이에 나타납니다.
두 번째 양식 만들기
데이터를 전달할 두 번째 양식을 만듭니다.
프로젝트 메뉴에서 양식 추가(Windows Forms)를 선택합니다.
Form2의 기본 이름을 그대로 두고 추가를 선택합니다.
데이터 원본 창에서 Form2로 기본 주문 노드를 끕니다.
DataGridView 및 BindingNavigator 도구 스트립이 Form2에 나타나며, 이는 레코드를 탐색하기 위한 것입니다. NorthwindDataSet ,
CustomersTableAdapter
및 BindingSourceBindingNavigator 구성 요소 트레이에 나타납니다.구성 요소 트레이에서 OrdersBindingNavigator 를 삭제합니다. BindingNavigator가 Form2에서 사라집니다.
TableAdapter 쿼리 추가
Form1에서 TableAdapter
선택한 고객에 대한 주문을 로드하는 쿼리를 Form2에 추가합니다.
솔루션 탐색기에서 NorthwindDataSet.xsd 파일을 두 번 클릭합니다.
Orders 테이블에서 OrdersTableAdapter를 마우스 오른쪽 단추로 클릭하고쿼리>를 선택합니다.
SQL 문 사용의 기본 옵션을 그대로 두고 다음을 선택합니다.
행을 반환하는 SELECT의 기본 옵션을 그대로 두고 다음을 선택합니다.
테이블이 로드해야 하는 데이터에서
Orders
를 기반으로CustomerID
을 반환하려면, 쿼리 끝에WHERE
절을 추가하세요. 최종 쿼리는 다음 코드와 유사해야 합니다.SELECT OrderID, CustomerID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
비고
데이터베이스에 올바른 매개 변수 구문을 사용합니다. 예를 들어 Microsoft Access에서
WHERE
와 같은 절은WHERE CustomerID = ?
입니다.다음을 선택합니다.
생성할 메서드 선택 화면에서 DataTable 채우기를 선택하고 FillByCustomerID를 입력합니다.
DataTable 반환 옵션을 선택 취소한 다음 마침을 선택합니다.
Form2에서 데이터를 전달할 메서드 만들기
Form2를 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택하여 편집기에서 Form2 코드를 엽니다.
Form2 코드에서 메서드의
Form2_Load
내용을 제거하고 메서드 다음에Form2_Load
다음 코드를 추가합니다.
internal void LoadOrders(String CustomerID)
{
ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}
Form1에서 데이터를 전달하고 Form2를 표시하는 메서드 만들기
Form1의 디자이너 보기에서 고객 데이터 그리드를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.
속성 창의 위쪽 도구 모음에서 이벤트 아이콘을 선택합니다.
DoubleClick 이벤트를 두 번 클릭하여 코드 편집기를 엽니다.
코드 편집기에서 다음 샘플과 일치하도록 메서드 정의를 업데이트합니다.
private void customersDataGridView_DoubleClick(object sender, EventArgs e)
{
System.Data.DataRowView SelectedRowView;
NorthwindDataSet.CustomersRow SelectedRow;
SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
Form2 OrdersForm = new Form2();
OrdersForm.LoadOrders(SelectedRow.CustomerID);
OrdersForm.Show();
}
앱 실행 및 테스트
F5 키를 눌러 애플리케이션을 실행합니다.
애플리케이션에서 Form1 에서 고객 레코드를 두 번 클릭하여 해당 고객의 주문으로 Form2 를 엽니다.
다음 단계
애플리케이션 요구 사항에 따라 양식 간에 데이터를 전달한 후 여러 단계를 수행할 수 있습니다. 이 자습서에서 수행할 수 있는 몇 가지 향상된 기능은 다음과 같습니다.
데이터 세트를 편집하여 데이터베이스 개체를 추가하거나 제거합니다. 자세한 내용은 데이터 세트 만들기 및 구성을 참조하세요.
데이터베이스에 데이터를 다시 저장하는 기능을 추가합니다. 자세한 내용은 데이터를 데이터베이스에 다시 저장을 참조하세요.