.NET Framework 애플리케이션에서 TableAdapters 만들기 및 구성

참고 항목

데이터 집합 및 관련 클래스는 2000년대 초반에 적용된 레거시 .NET Framework 기술로, 응용 프로그램이 데이터베이스에서 연결이 끊어진 동안 응용 프로그램이 메모리의 데이터로 작업할 수 있도록 합니다. 사용자가 데이터를 수정하고 변경 내용을 다시 데이터베이스에 유지할 수 있도록 하는 애플리케이션에 특히 유용합니다. 데이터 세트는 매우 성공적인 기술로 입증되었지만 새 .NET 애플리케이션은 Entity Framework Core를 사용하는 것이 좋습니다. Entity Framework는 표 형식 데이터를 개체 모델로 사용하는 더 자연스러운 방법을 제공하며 더 단순한 프로그래밍 인터페이스를 제공합니다.

TableAdapter는 애플리케이션과 데이터베이스 간의 통신을 제공합니다. 데이터베이스에 연결하고, 쿼리 또는 저장 프로시저를 실행하고, 새 데이터 테이블을 반환하거나 반환된 데이터로 기존 DataTable을 채웁니다. TableAdapter는 애플리케이션에서 업데이트된 데이터를 다시 데이터베이스로 보내기도 합니다.

TableAdapter는 다음 작업 중 하나를 수행할 때 생성됩니다.

  • 데이터베이스 개체를 서버 탐색기에서 데이터 세트 디자이너로 끌어다 놓습니다.

  • 데이터 원본 구성 마법사를 실행하고 데이터베이스 또는 웹 서비스 데이터 원본 유형을 선택합니다.

    Visual Studio의 데이터 원본 구성 마법사

새 TableAdapter를 만든 다음 도구 상자에서 데이터 세트 디자이너 화면의 빈 영역으로 끌어 TableAdapter를 구성할 수도 있습니다.

TableAdapter에 대한 소개는 TableAdapter를 사용하여 데이터 세트 채우기를 참조하세요.

참고 항목

이 문서의 일부 Visual Studio 사용자 인터페이스 요소에 대한 다른 이름 또는 위치가 컴퓨터에 표시될 수 있습니다. 다른 버전의 Visual Studio 또는 다른 환경 설정을 사용 중일 수 있습니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

TableAdapter 구성 마법사 사용

TableAdapter 및 관련 DataTable을 만들거나 편집하려면 TableAdapter 구성 마법사를 실행합니다. 데이터 세트 디자이너에서 기존 TableAdapter를 마우스 오른쪽 단추로 클릭하여 구성할 수 있습니다.

테이블 어댑터 구성 마법사를 보여 주는 스크린샷

데이터 세트 디자이너가 선택된 도구 상자에서 새 TableAdapter를 끌어다 놓으면 마법사가 시작되고, TableAdapter가 연결할 데이터 원본을 지정하라는 메시지가 표시됩니다. 다음 페이지에서는 마법사가 SQL 문 또는 저장 프로시저 중에서 데이터베이스와 통신하는 데 사용할 명령이 무엇인지 묻습니다. (데이터 원본과 이미 연결된 TableAdapter를 구성하는 경우 이 화면이 표시되지 않습니다.)

  • 데이터베이스에 대한 올바른 권한이 있는 경우 기본 데이터베이스에서 새 저장 프로시저를 만들 수 있습니다. 이러한 권한이 없으면 이 옵션을 사용할 수 없습니다.

  • TableAdapter의 SELECT, INSERT, UPDATE, DELETE 명령에 대한 기존 저장 프로시저를 실행할 수도 있습니다. 예를 들어 업데이트 명령에 할당된 저장 프로시저는 TableAdapter.Update() 메서드를 호출하면 실행됩니다.

선택한 저장 프로시저에서 데이터 테이블의 해당 열로 매개 변수를 매핑합니다. 예를 들어 저장 프로시저가 테이블의 CompanyName 열로 전달하는 @CompanyName 매개 변수를 허용하는 경우에는 @CompanyName 매개 변수의 소스 열CompanyName으로 설정합니다.

참고 항목

마법사의 다음 단계에서 이름을 지정하는 TableAdapter의 메서드를 호출하면 SELECT 명령에 할당된 저장 프로시저가 실행됩니다. 기본 메서드는 Fill이며, 따라서 일반적으로 SELECT 프로시저를 실행하는 데 사용되는 코드는 TableAdapter.Fill(tableName)입니다. Fill에서 기본 이름을 변경한 경우에는 Fill을 할당한 이름으로 바꾸고, "TableAdapter"를 TableAdapter의 실제 이름(예 CustomersTableAdapter)으로 바꿉니다.

  • 업데이트를 데이터베이스로 직접 보내는 메서드 만들기 옵션을 선택하는 것은 GenerateDBDirectMethods 속성을 true로 설정하는 것과 동일합니다. 원래 SQL 문에서 충분한 정보를 제공하지 않거나 쿼리가 업데이트할 수 없는 쿼리인 경우에는 이 옵션을 사용할 수 없습니다. 예를 들어 JOIN 쿼리 또는 단일(스칼라) 값을 반환하는 쿼리에서 이러한 현상이 발생할 수 있습니다.

마법사의 고급 옵션을 사용하면 다음을 수행할 수 있습니다.

  • SQL 문 생성 페이지에 정의된 SELECT 문을 기준으로 INSERT, UPDATE, 및 DELETE 문 생성
  • 낙관적 동시성 사용
  • INSERTUPDATE 문을 실행한 후 데이터 테이블 새로 고침 여부 지정

TableAdapter의 Fill 메서드 구성

TableAdapter 테이블의 스키마를 변경해야 할 때가 있습니다. 이렇게 하려면 TableAdapter의 기본 Fill 메서드를 수정해야 합니다. TableAdapter는 연결된 데이터 테이블의 스키마를 정의하는 기본 Fill 메서드를 사용하여 생성됩니다. 기본 Fill 메서드는 TableAdapter를 처음 구성할 때 입력한 쿼리 또는 저장 프로시저를 기반으로 합니다. 데이터 세트 디자이너의 데이터 테이블에 있는 첫 번째(최상위) 메서드입니다.

쿼리가 여러 개 포함된 TableAdapter

TableAdapter의 주 Fill 메서드에 적용한 모든 변경 내용은 연결된 데이터 테이블의 스키마에 반영됩니다. 예를 들어 주 Fill 메서드의 쿼리에서 열을 제거하면 연결된 데이터 테이블에서도 해당 열이 제거됩니다. 또한 주 Fill 메서드에서 열을 제거하면 관련 TableAdapter의 추가 쿼리에서도 열이 제거됩니다.

TableAdapter 쿼리 구성 마법사를 사용하여 TableAdapter에 대한 추가 쿼리를 만들고 편집할 수 있습니다. 이러한 추가 쿼리는 스칼라 값을 반환하지 않는 한 테이블 스키마를 준수해야 합니다. 추가 쿼리에는 사용자가 지정한 이름이 있습니다.

다음 예제에서는 FillByCity라는 추가 쿼리를 호출하는 방법을 확인할 수 있습니다.

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

새 쿼리를 사용하여 TableAdapter 쿼리 구성 마법사를 시작하려면

  1. 데이터 세트 디자이너에서 데이터 세트를 엽니다.

  2. 새 쿼리를 만드는 경우 도구 상자DataTable데이터 집합 탭에서 쿼리 개체를 끌어 오거나 TableAdapter의 바로 가기 메뉴에서 쿼리 추가를 선택합니다. 쿼리 개체를 데이터 세트 디자이너의 빈 영역으로 끌어도 됩니다. 이렇게 하면 DataTable이 연결되지 않은 TableAdapter가 생성됩니다. 이러한 쿼리는 단일(스칼라) 값만 반환하거나, 데이터베이스를 대상으로 UPDATE, INSERT, 또는 DELETE 명령을 실행할 수 있습니다.

  3. 데이터 연결 선택 화면에서 쿼리가 사용할 연결을 선택하거나 생성합니다.

    참고 항목

    이 화면은 디자이너가 사용할 적절한 연결을 확인할 수 없거나 사용할 수 있는 연결이 없는 경우에만 표시됩니다.

  4. 명령 유형 선택 화면에서 데이터베이스에서 데이터를 가져오는 다음 방법 중 하나를 선택합니다.

    • SQL 문 사용을 이용하면 데이터베이스에서 데이터를 선택하는 SQL 문을 입력할 수 있습니다.

    • 새 저장 프로시저 만들기를 사용하면 지정한 SELECT 문을 기준으로 마법사가 (데이터베이스에) 새 저장 프로시저를 만들게 할 수 있습니다.

    • 기존 저장 프로시저 사용을 이용하면 쿼리를 실행할 때 기존 저장 프로시저를 실행할 수 있습니다.

기존 쿼리를 사용하여 TableAdapter 쿼리 구성 마법사를 시작하려면

  • 기존 TableAdapter 쿼리를 편집하는 경우 쿼리를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 구성을 선택합니다 .

    참고 항목

    TableAdapter의 주 쿼리를 마우스 오른쪽 단추로 클릭하면 TableAdapter와 DataTable 스키마가 다시 구성됩니다. 그러나 TableAdapter에서 추가 쿼리를 마우스 오른쪽 단추로 클릭하면 선택한 쿼리만 구성됩니다. TableAdapter 구성 마법사는 TableAdapter 정의를 다시 구성하는 반면 TableAdapter 쿼리 구성 마법사는 선택한 쿼리만 다시 구성합니다.

TableAdapter에 전역 쿼리를 추가하려면

  • 전역 쿼리는 단일(스칼라) 값을 반환하거나 아무 값도 반환하지 않는 SQL 쿼리입니다. 일반적으로 전역 함수는 삽입, 업데이트, 삭제 같은 데이터베이스 작업을 수행합니다. 테이블 내 고객 수나 특정 주문의 모든 항목에 대한 총 요금 같은 정보를 집계하기도 합니다.

    도구 상자데이터 세트 탭에서 쿼리 개체를 데이터 세트 디자이너의 빈 영역으로 끌어 전역 쿼리를 추가합니다.

  • 원하는 작업(예: SELECT COUNT(*) AS CustomerCount FROM Customers)을 수행하는 쿼리를 제공합니다.

    참고 항목

    Query 개체를 데이터 세트 디자이너로 바로 끌어다 놓아 스칼라(단일) 값만 반환하는 메서드를 만듭니다. 선택한 쿼리 또는 저장 프로시저는 두 개 이상의 값을 반환할 수 있지만, 마법사에서 만든 메서드는 단일 값만 반환합니다. 예를 들어 쿼리는 반환된 데이터의 첫 번째 행에 있는 첫 번째 열을 반환할 수 있습니다.