SqlDataSource 컨트롤을 사용하여 데이터 쿼리(VB)

작성자 : Scott Mitchell

PDF 다운로드

이전 자습서에서는 ObjectDataSource 컨트롤을 사용하여 프레젠테이션 계층을 데이터 액세스 계층과 완전히 분리했습니다. 이 자습서부터는 프레젠테이션과 데이터 액세스를 엄격하게 분리할 필요가 없는 간단한 애플리케이션에 SqlDataSource 컨트롤을 사용하는 방법을 알아봅니다.

소개

지금까지 살펴본 모든 자습서에서는 프레젠테이션, 비즈니스 논리 및 데이터 액세스 계층으로 구성된 계층화된 아키텍처를 사용했습니다. DAL(데이터 액세스 계층)은 첫 번째 자습서(데이터 액세스 계층 만들기)와 두 번째 자습서의 비즈니스 논리 계층(비즈니스 논리 계층 만들기)에서 제작되었습니다. ObjectDataSource를 사용하여 데이터 표시 자습서부터 ASP.NET 2.0의 새 ObjectDataSource 컨트롤을 사용하여 프레젠테이션 계층의 아키텍처와 선언적으로 인터페이스하는 방법을 알아보았습니다.

지금까지 모든 자습서에서 아키텍처를 사용하여 데이터를 사용했지만 아키텍처를 우회하여 ASP.NET 페이지에서 직접 데이터베이스 데이터에 액세스, 삽입, 업데이트 및 삭제할 수도 있습니다. 이렇게 하면 특정 데이터베이스 쿼리 및 비즈니스 논리가 웹 페이지에 직접 배치됩니다. 충분히 크거나 복잡한 애플리케이션의 경우 계층화된 아키텍처의 디자인, 구현 및 사용은 애플리케이션의 성공, 업디텍션 및 유지 관리에 매우 중요합니다. 그러나 매우 간단한 일회성 애플리케이션을 만들 때 강력한 아키텍처를 개발하는 것은 필요하지 않을 수 있습니다.

ASP.NET 2.0은 SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSourceSiteMapDataSource의 5가지 기본 제공 데이터 원본 컨트롤을 제공합니다. SqlDataSource를 사용하여 Microsoft SQL Server, Microsoft Access, Oracle, MySQL 등을 비롯한 관계형 데이터베이스에서 직접 데이터에 액세스하고 수정할 수 있습니다. 이 자습서와 다음 3개에서는 SqlDataSource 컨트롤을 사용하여 데이터베이스 데이터를 쿼리 및 필터링하는 방법과 SqlDataSource를 사용하여 데이터를 삽입, 업데이트 및 삭제하는 방법을 살펴보겠습니다.

ASP.NET 2.0에는 5개의 Built-In 데이터 원본 제어가 포함됩니다.

그림 1: ASP.NET 2.0에는 5개의 Built-In 데이터 원본 제어가 포함됩니다.

ObjectDataSource 및 SqlDataSource 비교

개념적으로 ObjectDataSource 및 SqlDataSource 컨트롤은 모두 데이터에 대한 프록시일 뿐입니다. ObjectDataSource를 사용하여 데이터 표시 자습서에서 설명한 대로 ObjectDataSource에는 기본 개체 형식에서 데이터를 선택, 삽입, 업데이트 및 삭제하기 위해 호출할 데이터와 메서드를 제공하는 개체 형식을 나타내는 속성이 있습니다. ObjectDataSource의 속성이 구성되면 ObjectDataSource Select()의 , Insert(), Delete()및 메서드를 사용하여 GridView, DetailsView 또는 DataList와 같은 데이터 웹 컨트롤을 컨트롤에 바인딩하여 기본 아키텍처와 Update() 상호 작용할 수 있습니다.

SqlDataSource는 동일한 기능을 제공하지만 개체 라이브러리가 아닌 관계형 데이터베이스에 대해 작동합니다. SqlDataSource를 사용하면 데이터베이스 연결 문자열 및 임시 SQL 쿼리 또는 저장 프로시저를 지정하여 데이터를 삽입, 업데이트, 삭제 및 검색해야 합니다. SqlDataSource의 Select(), Insert(), Update()Delete() 메서드는 호출될 때 지정된 데이터베이스에 연결하고 적절한 SQL 쿼리를 실행합니다. 다음 다이어그램에서 알 수 있듯이 이러한 메서드는 데이터베이스에 연결하고, 쿼리를 실행하고, 결과를 반환하는 작업을 수행합니다.

SqlDataSource는 데이터베이스에 대한 프록시 역할을 합니다.

그림 2: SqlDataSource는 데이터베이스에 대한 프록시 역할을 합니다.

참고

이 자습서에서는 데이터베이스에서 데이터를 검색하는 데 집중합니다. SqlDataSource 컨트롤을 사용하여 데이터 삽입, 업데이트 및 삭제 자습서에서 삽입, 업데이트 및 삭제를 지원하도록 SqlDataSource를 구성하는 방법을 알아보세요.

SqlDataSource 및 AccessDataSource 컨트롤

SqlDataSource 컨트롤 외에도 ASP.NET 2.0에는 AccessDataSource 컨트롤도 포함됩니다. 이러한 두 가지 컨트롤로 인해 많은 개발자가 ASP.NET 2.0을 통해 AccessDataSource 컨트롤이 Microsoft SQL Server 독점적으로 작동하도록 설계된 SqlDataSource 컨트롤과 함께 Microsoft Access와 독점적으로 작동하도록 설계되었다는 의심을 품게 됩니다. AccessDataSource는 Microsoft Access에서 특별히 작동하도록 설계되어 있지만 SqlDataSource 컨트롤은 .NET을 통해 액세스할 수 있는 관계 형 데이터베이스에서 작동합니다. 여기에는 Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL 및 PostgreSQL과 같은 OleDb 또는 ODBC 규격 데이터 저장소가 포함됩니다.

AccessDataSource와 SqlDataSource 컨트롤 간의 유일한 차이점은 데이터베이스 연결 정보를 지정하는 방법입니다. AccessDataSource 컨트롤에는 Access 데이터베이스 파일에 대한 파일 경로만 필요합니다. 반면 SqlDataSource에는 완전한 연결 문자열 필요합니다.

1단계: SqlDataSource 웹 페이지 만들기

SqlDataSource 컨트롤을 사용하여 데이터베이스 데이터를 직접 사용하는 방법을 살펴보기 전에 먼저 이 자습서와 다음 세 가지에 필요한 웹 사이트 프로젝트의 ASP.NET 페이지를 만들어 보겠습니다. 먼저 라는 SqlDataSource새 폴더를 추가합니다. 다음으로, 해당 폴더에 다음 ASP.NET 페이지를 추가하여 각 페이지를 master 페이지와 Site.master 연결해야 합니다.

  • Default.aspx
  • Querying.aspx
  • ParameterizedQueries.aspx
  • InsertUpdateDelete.aspx
  • OptimisticConcurrency.aspx

SqlDataSource-Related 자습서에 대한 ASP.NET 페이지 추가

그림 3: SqlDataSource-Related 자습서에 대한 ASP.NET 페이지 추가

다른 폴더와 Default.aspx 마찬가지로 폴더의 SqlDataSource 섹션에 자습서가 나열됩니다. 사용자 컨트롤은 SectionLevelTutorialListing.ascx 이 기능을 제공합니다. 따라서 솔루션 탐색기 페이지의 디자인 보기로 끌어 이 사용자 컨트롤 Default.aspx 을 에 추가합니다.

SectionLevelTutorialListing.ascx 사용자 컨트롤을 추가하여 Default.aspx

그림 4: 사용자 정의 컨트롤을 SectionLevelTutorialListing.ascxDefault.aspx 추가합니다(전체 크기 이미지를 보려면 클릭).

마지막으로 이러한 네 페이지를 파일에 항목으로 추가합니다 Web.sitemap . 특히 DataList 및 Repeater에 사용자 지정 단추 추가 다음에 다음 태그를 추가합니다 <siteMapNode>.

<siteMapNode url="~/SqlDataSource/Default.aspx"
    title="Using the SqlDataSource Control"
    description="Work directly with database data using the SqlDataSource control.">
    <siteMapNode url="~/SqlDataSource/Querying.aspx" title="Retrieving Database Data"
        description="Examines how to query data from a database that can then be
                     displayed  through a data Web control."/>
    <siteMapNode url="~/SqlDataSource/ParameterizedQueries.aspx"
        title="Parameterized Queries"
        description="Learn how to specify parameterized WHERE clauses in the
                     SqlDataSource's SELECT statement." />
    <siteMapNode url="~/SqlDataSource/InsertUpdateDelete.aspx"
        title="Inserting, Updating, and Deleting Database Data"
        description="See how to configure the SqlDataSource to include INSERT, UPDATE,
                      and DELETE statements." />
    <siteMapNode url="~/SqlDataSource/OptimisticConcurrency.aspx"
        title="Using Optimistic Concurrency"
        description="Explore how to augment the SqlDataSource to include support for
                     optimistic concurrency." />
</siteMapNode>

를 업데이트 Web.sitemap한 후 잠시 시간을 내어 브라우저를 통해 자습서 웹 사이트를 봅니다. 이제 왼쪽 메뉴에는 자습서 편집, 삽입 및 삭제를 위한 항목이 포함됩니다.

이제 사이트 맵에 SqlDataSource 자습서에 대한 항목이 포함됩니다.

그림 5: 이제 사이트 맵에 SqlDataSource 자습서에 대한 항목이 포함됨

2단계: SqlDataSource 컨트롤 추가 및 구성

먼저 폴더에서 Querying.aspxSqlDataSource 페이지를 열고 디자인 보기로 전환합니다. SqlDataSource 컨트롤을 도구 상자에서 Designer 끌어서 로 IDProductsDataSource설정합니다. ObjectDataSource와 마찬가지로 SqlDataSource는 렌더링된 출력을 생성하지 않으므로 디자인 화면에 회색 상자로 표시됩니다. SqlDataSource를 구성하려면 SqlDataSource의 스마트 태그에서 데이터 원본 구성 링크를 클릭합니다.

SqlDataSource의 스마트 태그에서 데이터 Source Link 구성을 클릭합니다.

그림 6: SqlDataSource의 스마트 태그에서 데이터 Source Link 구성을 클릭합니다.

그러면 SqlDataSource 컨트롤의 데이터 원본 구성 마법사가 표시됩니다. 마법사의 단계는 ObjectDataSource 컨트롤과 다르지만 최종 목표는 데이터 원본을 통해 데이터를 검색, 삽입, 업데이트 및 삭제하는 방법에 대한 세부 정보를 제공하는 것과 동일합니다. SqlDataSource의 경우 사용할 기본 데이터베이스를 지정하고 임시 SQL 문 또는 저장 프로시저를 제공해야 합니다.

첫 번째 마법사 단계에서는 데이터베이스를 묻는 메시지를 표시합니다. 드롭다운 목록에는 웹 애플리케이션 폴더 App_Data 에 있는 데이터베이스와 서버 Explorer 데이터 Connections 노드에 추가된 데이터베이스가 포함됩니다. 폴더의 데이터베이스에 대한 NORTHWIND.MDF 연결 문자열 이미 프로젝트 Web.config 파일에 추가했으므로 드롭다운 목록에는 해당 연결 문자열 NORTHWINDConnectionString대한 참조가 포함 App_Data 됩니다. 드롭다운 목록에서 이 항목을 선택하고 다음을 클릭합니다.

Drop-Down 목록에서 NORTHWINDConnectionString을 선택합니다.

그림 7: Drop-Down 목록에서 선택 NORTHWINDConnectionString

데이터베이스를 선택한 후 마법사는 데이터를 반환하는 쿼리를 요청합니다. 반환할 테이블 또는 뷰의 열을 지정하거나 사용자 지정 SQL 문을 입력하거나 저장 프로시저를 지정할 수 있습니다. 사용자 지정 SQL 문 또는 저장 프로시저 지정 및 테이블 또는 뷰 라디오 단추에서 열 지정 단추를 통해 이 선택 항목 간에 전환할 수 있습니다.

참고

이 첫 번째 예제에서는 테이블 또는 뷰에서 열 지정 옵션을 사용하겠습니다. 이 자습서의 뒷부분에서 마법사로 돌아가서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 살펴봅니다.

그림 8에서는 테이블 또는 뷰 라디오에서 열 지정 단추가 선택된 경우 문 선택 구성 화면을 보여 줍니다. 드롭다운 목록에는 Northwind 데이터베이스의 테이블 및 뷰 집합이 포함되며, 선택한 테이블 또는 뷰 열이 아래 확인란 목록에 표시됩니다. 이 예제에서는 테이블에서 , ProductNameUnitPrice 열을 Products 반환ProductID하겠습니다. 그림 8에서 볼 수 있듯이 이러한 항목을 선택한 후 마법사는 결과 SQL 문을 SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]표시합니다.

Products 테이블에서 데이터 반환

그림 8: 테이블에서 데이터 Products 반환

테이블에서 , ProductNameUnitPrice 열을 반환ProductID하도록 마법사를 Products 구성한 후 다음 단추를 클릭합니다. 이 최종 화면에서는 이전 단계에서 구성한 쿼리의 결과를 검사할 수 있습니다. 쿼리 테스트 단추를 클릭하면 구성된 SELECT 문이 실행되고 결과가 표에 표시됩니다.

쿼리 테스트 단추를 클릭하여 SELECT 쿼리를 검토합니다.

그림 9: 쿼리 테스트 단추를 클릭하여 쿼리 검토 SELECT

마법사를 완료하려면 마침을 클릭합니다.

ObjectDataSource와 마찬가지로 SqlDataSource 마법사는 컨트롤의 속성, 즉 및 SelectCommand 속성에 ConnectionString 만 값을 할당합니다. 마법사를 완료한 후 SqlDataSource 컨트롤의 선언적 태그는 다음과 유사하게 표시됩니다.

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]">
</asp:SqlDataSource>

속성은 ConnectionString 데이터베이스에 연결하는 방법에 대한 정보를 제공합니다. 이 속성은 하드 코딩된 전체 연결 문자열 값을 할당하거나 의 Web.config연결 문자열 가리킬 수 있습니다. Web.config 연결 문자열 값을 참조하려면 구문을 <%$ expressionPrefix:expressionValue %>사용합니다. 일반적으로 expressionPrefix는 ConnectionStrings이고 expressionValue는 섹션에 있는 Web.config<connectionStrings>연결 문자열의 이름입니다. 그러나 구문을 사용하여 리소스 파일의 요소 또는 콘텐츠를 참조 <appSettings> 할 수 있습니다. 이 구문에 대한 자세한 내용은 ASP.NET 식 개요 를 참조하세요.

속성은 SelectCommand 데이터를 반환하기 위해 실행할 임시 SQL 문 또는 저장 프로시저를 지정합니다.

3단계: 데이터 웹 컨트롤 추가 및 SqlDataSource에 바인딩

SqlDataSource가 구성되면 GridView 또는 DetailsView와 같은 데이터 웹 컨트롤에 바인딩될 수 있습니다. 이 자습서에서는 GridView에 데이터를 표시해 보겠습니다. 도구 상자에서 GridView를 페이지로 끌어서 GridView 스마트 태그의 드롭다운 목록에서 데이터 원본을 선택하여 SqlDataSource에 바인딩 ProductsDataSource 합니다.

GridView를 추가하고 SqlDataSource 컨트롤에 바인딩

그림 10: GridView 추가 및 SqlDataSource 컨트롤에 바인딩(전체 크기 이미지를 보려면 클릭)

GridView 스마트 태그의 드롭다운 목록에서 SqlDataSource 컨트롤을 선택하면 Visual Studio는 데이터 소스 컨트롤에서 반환되는 각 열에 대해 GridView에 BoundField 또는 CheckBoxField를 자동으로 추가합니다. SqlDataSource는 3개의 ProductID데이터베이스 열 , 를 ProductName반환하므로 UnitPrice GridView에는 세 개의 필드가 있습니다.

잠시 시간을 내어 GridView의 세 개의 BoundFields를 구성합니다. 필드의 ProductNameHeaderText 속성을 제품 이름으로 변경하고 UnitPrice 필드를 Price로 변경합니다. 필드 서식도 UnitPrice 통화로 지정합니다. 이러한 수정을 수행한 후 GridView의 선언적 태그는 다음과 유사하게 표시됩니다.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="Product Name"
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="Price"
            SortExpression="UnitPrice" DataFormatString="{0:c}"
            HtmlEncode="False" />
    </Columns>
</asp:GridView>

브라우저를 통해 이 페이지를 방문하세요. 그림 11에서 보여 주듯이 GridView는 각 제품의 ProductID, ProductNameUnitPrice 값을 나열합니다.

GridView는 각 제품의 ProductID, ProductName 및 UnitPrice 값을 표시합니다.

그림 11: GridView는 각 제품의 ProductID, ProductNameUnitPrice 값을 표시합니다(전체 크기 이미지를 보려면 클릭).

페이지를 방문하면 GridView는 해당 데이터 소스 제어의 Select() 메서드를 호출합니다. ObjectDataSource 컨트롤을 사용할 때 클래스의 GetProducts() 메서드를 ProductsBLL 호출했습니다. 그러나 SqlDataSource를 사용하여 메서드는 Select() 지정된 데이터베이스에 대한 연결을 설정하고 (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]이 예제에서는)를 발급 SelectCommand 합니다. SqlDataSource는 GridView가 열거하는 결과를 반환하여 반환된 각 데이터베이스 레코드에 대한 GridView에 행을 만듭니다.

Built-In 데이터 웹 컨트롤 기능 및 SqlDataSource 컨트롤

일반적으로 데이터 웹 컨트롤 페이징, 정렬, 편집, 삭제, 삽입 등에 내재된 기능은 데이터 웹 컨트롤에만 적용되며 사용되는 데이터 원본 컨트롤에 종속되지 않습니다. 즉, GridView는 기본 제공 페이징, 정렬, 편집 및 삭제를 ObjectDataSource 또는 SqlDataSource에 바인딩할지 여부를 활용할 수 있습니다. 그러나 특정 데이터 웹 컨트롤 기능은 사용 중인 데이터 원본 제어 또는 데이터 소스 컨트롤의 구성에 민감합니다.

예를 들어 많은 양의 데이터를 통해 효율적으로 페이징 자습서에서는 기본적으로 데이터 웹 컨트롤의 페이징 논리가 기본 데이터 원본의 모든 레코드를 순진하게 반환한 다음 현재 페이지 인덱스와 페이지당 표시할 레코드 수가 지정된 적절한 레코드 하위 집합만 표시하는 방법을 설명했습니다. 이 모델은 충분히 큰 결과 집합을 페이징할 때 매우 비효율적입니다. 다행히 ObjectDataSource는 표시할 레코드의 정확한 하위 집합만 반환하는 사용자 지정 페이징을 지원하도록 구성할 수 있습니다. 그러나 SqlDataSource 컨트롤에는 사용자 지정 페이징을 구현하기 위한 속성이 없습니다.

페이징 및 정렬의 또 다른 미묘한 문제는 SqlDataSource에서 발생합니다. 기본적으로 SqlDataSource에서 반환된 데이터는 GridView를 통해 페이징하거나 정렬할 수 있습니다. 이를 보여 주려면 의 GridView 스마트 태그 Querying.aspx 에서 페이징 사용 및 정렬 사용 옵션을 검사 예상대로 작동하는지 확인합니다.

SqlDataSource가 데이터베이스 데이터를 느슨하게 형식화된 DataSet으로 검색하기 때문에 정렬 및 페이징이 작동합니다. 페이징 구현에 필수적인 측면인 쿼리에서 반환된 총 레코드 수는 DataSet에서 확인할 수 있습니다. 또한 DataSet의 결과는 DataView를 통해 정렬할 수 있습니다. 이러한 기능은 GridView가 페이징 또는 정렬된 데이터를 요청할 때 SqlDataSource에서 자동으로 사용됩니다.

SqlDataSource는 속성을DataSourceMode (기본값)에서 DataSet 로 변경하여 DataSet 대신 DataReader를 반환하도록 DataReader구성할 수 있습니다. DataReader를 사용하는 것이 SqlDataSource 결과를 DataReader가 필요한 기존 코드에 전달할 때 선호될 수 있습니다. 또한 DataReaders는 DataSets보다 훨씬 간단한 개체이므로 더 나은 성능을 제공합니다. 그러나 이 변경을 수행하면 SqlDataSource가 쿼리에서 반환되는 레코드 수를 확인할 수 없고 DataReader가 반환된 데이터를 정렬하는 기술을 제공하지 않으므로 데이터 웹 컨트롤은 정렬하거나 페이지를 정렬할 수 없습니다.

4단계: 사용자 지정 SQL 문 또는 저장 프로시저 사용

SqlDataSource 컨트롤을 구성할 때 데이터를 반환하는 데 사용되는 쿼리는 사용자 지정 SQL 문 또는 저장 프로시저 또는 기존 테이블 또는 뷰의 열로 두 가지 방법 중 하나로 지정할 수 있습니다. 2단계에서는 테이블에서 열 선택을 검토했습니다 Products . 사용자 지정 SQL 문을 사용하여 살펴보겠습니다.

페이지에 다른 GridView 컨트롤을 Querying.aspx 추가하고 스마트 태그의 드롭다운 목록에서 새 데이터 원본을 만들도록 선택합니다. 다음으로, 데이터베이스에서 데이터를 끌어오면 새 SqlDataSource 컨트롤이 생성됨을 나타냅니다. 컨트롤 이름을 로 지정합니다 ProductsWithCategoryInfoDataSource.

ProductsWithCategoryInfoDataSource라는 새 SqlDataSource 컨트롤 만들기

그림 12: 명명된 새 SqlDataSource 컨트롤 만들기 ProductsWithCategoryInfoDataSource

다음 화면에서는 데이터베이스를 지정하도록 요청합니다. 그림 7에서 수행한 것처럼 드롭다운 목록에서 를 선택하고 NORTHWINDConnectionString 다음을 클릭합니다. 문 선택 구성 화면에서 사용자 지정 SQL 문 또는 저장 프로시저 지정 라디오 단추를 선택하고 다음을 클릭합니다. 그러면 SELECT, UPDATE, INSERT 및 DELETE라는 레이블이 지정된 탭을 제공하는 사용자 지정 문 또는 저장 프로시저 정의 화면이 표시됩니다. 각 탭에서 텍스트 상자에 사용자 지정 SQL 문을 입력하거나 드롭다운 목록에서 저장 프로시저를 선택할 수 있습니다. 이 자습서에서는 사용자 지정 SQL 문을 입력하는 것을 살펴보겠습니다. 다음 자습서에는 저장 프로시저를 사용하는 예제가 포함되어 있습니다.

사용자 지정 SQL 문을 입력하거나 저장 프로시저 선택

그림 13: 사용자 지정 SQL 문을 입력하거나 저장 프로시저 선택

사용자 지정 SQL 문을 텍스트 상자에 직접 입력하거나 쿼리 작성기 단추를 클릭하여 그래픽으로 생성할 수 있습니다. 쿼리 작성기 또는 텍스트 상자에서 Products 다음 쿼리를 사용하여 를 사용하여 JOIN 테이블에서 및 ProductName 필드를 반환 ProductID 하여 테이블에서 제품 s CategoryNameCategories 검색합니다.

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Categories
    INNER JOIN Products ON
        Categories.CategoryID = Products.CategoryID

쿼리 작성기를 사용하여 쿼리를 그래픽으로 생성할 수 있습니다.

그림 14: 쿼리 작성기를 사용하여 쿼리를 그래픽으로 생성할 수 있습니다.

쿼리를 지정한 후 다음을 클릭하여 쿼리 테스트 화면으로 진행합니다. 마침을 클릭하여 SqlDataSource 마법사를 완료합니다.

마법사를 완료한 후 GridView에는 쿼리에서 반환된 , ProductNameCategoryName 열을 표시하는 ProductID세 개의 BoundFields가 추가되어 다음과 같은 선언적 태그가 생성됩니다.

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsWithCategoryInfoDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"
            SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="CategoryName"
            SortExpression="CategoryName" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="ProductsWithCategoryInfoDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="
        SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
        FROM Categories
        INNER JOIN Products ON Categories.CategoryID = Products.CategoryID">
</asp:SqlDataSource>

GridView는 각 제품의 ID, 이름 및 연결된 범주 이름을 표시합니다.

그림 15: GridView는 각 제품의 ID, 이름 및 관련 범주 이름을 표시합니다(전체 크기 이미지를 보려면 클릭).

요약

이 자습서에서는 SqlDataSource 컨트롤을 사용하여 데이터를 쿼리하고 표시하는 방법을 알아보았습니다. ObjectDataSource와 마찬가지로 SqlDataSource는 프록시 역할을 하며 데이터에 액세스하는 선언적 접근 방식을 제공합니다. 해당 속성은 연결할 데이터베이스와 실행할 SQL SELECT 쿼리를 지정합니다. 속성 창 또는 DataSource 구성 마법사를 사용하여 지정할 수 있습니다.

이 자습서에서 검사한 쿼리 예제는 SELECT 지정된 쿼리의 모든 레코드를 반환했습니다. 그러나 SqlDataSource 컨트롤에는 값이 프로그래밍 방식으로 할당되거나 지정된 원본에서 자동으로 끌어오는 매개 변수가 있는 절이 포함될 WHERE 수 있습니다. 다음 자습서에서는 매개 변수가 있는 쿼리를 만들고 사용하는 방법을 살펴보겠습니다.

행복한 프로그래밍!

추가 정보

이 자습서에서 설명하는 topics 대한 자세한 내용은 다음 리소스를 참조하세요.

저자 정보

7개의 ASP/ASP.NET 책의 저자이자 4GuysFromRolla.com 창립자인 Scott Mitchell은 1998년부터 Microsoft 웹 기술을 연구해 왔습니다. Scott은 독립 컨설턴트, 트레이너 및 작가로 일합니다. 그의 최신 책은 샘스 자신을 가르친다 ASP.NET 2.0 24 시간. 그는 에서 찾을 수있는 그의 블로그를 통해 또는 에 mitchell@4GuysFromRolla.comhttp://ScottOnWriting.NET도달 할 수 있습니다.

특별 감사

이 자습서 시리즈는 많은 유용한 검토자가 검토했습니다. 이 자습서의 수석 검토자는 수잔 코너리, 버나데트 리, 데이비드 수루였습니다. 예정된 MSDN 문서를 검토하시겠습니까? 그렇다면 에 줄을 놓습니다 mitchell@4GuysFromRolla.com.