SqlDataSource 컨트롤을 사용하여 데이터 쿼리(C#)
로 스콧 미첼
이전 자습서에서는 ObjectDataSource 컨트롤을 사용하여 프레젠테이션 계층을 데이터 액세스 계층과 완전히 분리했습니다. 이 자습서부터는 프레젠테이션과 데이터 액세스를 엄격하게 분리할 필요가 없는 간단한 애플리케이션에 SqlDataSource 컨트롤을 사용하는 방법을 알아봅니다.
소개
지금까지 살펴본 모든 자습서에서는 프레젠테이션, 비즈니스 논리 및 데이터 액세스 계층으로 구성된 계층화된 아키텍처를 사용했습니다. DAL(데이터 액세스 계층)은 첫 번째 자습서(데이터 액세스 계층 만들기)와 두 번째 자습서의 비즈니스 논리 계층(비즈니스 논리 계층 만들기)에서 작성되었습니다. ObjectDataSource를 사용하여 데이터 표시 자습서부터 ASP.NET 2.0의 새 ObjectDataSource 컨트롤을 사용하여 프레젠테이션 계층의 아키텍처와 선언적으로 인터페이스하는 방법을 알아보았습니다.
지금까지 모든 자습서에서 아키텍처를 사용하여 데이터를 사용하지만 아키텍처를 우회하여 ASP.NET 페이지에서 직접 데이터베이스 데이터에 액세스, 삽입, 업데이트 및 삭제할 수도 있습니다. 이렇게 하면 특정 데이터베이스 쿼리 및 비즈니스 논리가 웹 페이지에 직접 배치됩니다. 충분히 크거나 복잡한 애플리케이션의 경우 계층화된 아키텍처를 설계, 구현 및 사용하는 것이 애플리케이션의 성공, 호환성 및 유지 관리에 매우 중요합니다. 그러나 매우 간단한 일회성 애플리케이션을 만들 때 강력한 아키텍처를 개발하는 것은 필요하지 않을 수 있습니다.
ASP.NET 2.0은 SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource 및 SiteMapDataSource의 5가지 기본 제공 데이터 원본 컨트롤을 제공합니다. SqlDataSource를 사용하여 Microsoft SQL Server, Microsoft Access, Oracle, MySQL 등을 비롯한 관계형 데이터베이스에서 직접 데이터에 액세스하고 수정할 수 있습니다. 이 자습서와 다음 세 가지에서는 SqlDataSource 컨트롤을 사용하여 데이터베이스 데이터를 쿼리 및 필터링하는 방법뿐만 아니라 SqlDataSource를 사용하여 데이터를 삽입, 업데이트 및 삭제하는 방법을 살펴보겠습니다.
그림 1: ASP.NET 2.0에는 5개의 기본 제공 데이터 원본 제어가 포함됩니다.
ObjectDataSource 및 SqlDataSource 비교
개념적으로 ObjectDataSource 및 SqlDataSource 컨트롤은 모두 데이터에 대한 프록시일 뿐입니다. ObjectDataSource를 사용하여 데이터 표시 자습서에서 설명한 것처럼 ObjectDataSource 에는 데이터를 제공하는 개체 형식과 기본 개체 형식에서 데이터를 선택, 삽입, 업데이트 및 삭제하기 위해 호출할 메서드를 나타내는 속성이 있습니다. ObjectDataSource의 속성이 구성되면 GridView, DetailsView 또는 DataList와 같은 데이터 웹 컨트롤을 ObjectDataSource 및 Select()
Insert()
Delete()
메서드를 사용하여 컨트롤에 바인딩하여 기본 아키텍처와 Update()
상호 작용할 수 있습니다.
SqlDataSource는 동일한 기능을 제공하지만 개체 라이브러리가 아닌 관계형 데이터베이스에 대해 작동합니다. SqlDataSource를 사용하여 데이터를 삽입, 업데이트, 삭제 및 검색하기 위해 실행할 데이터베이스 연결 문자열 임시 SQL 쿼리 또는 저장 프로시저를 지정해야 합니다. SqlDataSource, Select()
Insert()
Update()
및 Delete()
메서드가 호출될 때 지정된 데이터베이스에 연결하고 적절한 SQL 쿼리를 실행합니다. 다음 다이어그램에서 알 수 있듯이 이러한 메서드는 데이터베이스에 연결하고, 쿼리를 실행하고, 결과를 반환하는 작업을 수행합니다.
그림 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 페이지를 해당 폴더에 추가하여 각 페이지를 마스터 페이지와 Site.master
연결해야 합니다.
Default.aspx
Querying.aspx
ParameterizedQueries.aspx
InsertUpdateDelete.aspx
OptimisticConcurrency.aspx
그림 3: SqlDataSource 관련 자습서의 ASP.NET 페이지 추가
다른 폴더와 Default.aspx
마찬가지로 폴더에 SqlDataSource
해당 섹션의 자습서가 나열됩니다. 사용자 컨트롤이 SectionLevelTutorialListing.ascx
이 기능을 제공한다는 점을 기억하세요. 따라서 이 사용자 컨트롤을 Default.aspx
솔루션 탐색기 페이지 디자인 보기로 끌어서 추가합니다.
그림 4: 사용자 정의 컨트롤 추가 SectionLevelTutorialListing.ascx
Default.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
한 후 잠시 브라우저를 통해 자습서 웹 사이트를 봅니다. 이제 왼쪽 메뉴에는 자습서 편집, 삽입 및 삭제를 위한 항목이 포함되어 있습니다.
그림 5: 이제 사이트 맵에 SqlDataSource 자습서에 대한 항목이 포함됨
2단계: SqlDataSource 컨트롤 추가 및 구성
먼저 폴더에서 Querying.aspx
SqlDataSource
페이지를 열고 디자인 보기로 전환합니다. 도구 상자에서 디자이너로 SqlDataSource 컨트롤을 끌어서 설정합니다 ID
ProductsDataSource
. ObjectDataSource와 마찬가지로 SqlDataSource는 렌더링된 출력을 생성하지 않으므로 디자인 화면에 회색 상자로 나타납니다. SqlDataSource를 구성하려면 SqlDataSource의 스마트 태그에서 데이터 원본 구성 링크를 클릭합니다.
그림 6: SqlDataSource의 스마트 태그에서 데이터 원본 구성 링크를 클릭합니다.
그러면 SqlDataSource 컨트롤의 데이터 원본 구성 마법사가 표시됩니다. 마법사의 단계는 ObjectDataSource 컨트롤과 다르지만 최종 목표는 데이터 원본을 통해 데이터를 검색, 삽입, 업데이트 및 삭제하는 방법에 대한 세부 정보를 제공하는 것과 동일합니다. SqlDataSource의 경우 사용할 기본 데이터베이스를 지정하고 임시 SQL 문 또는 저장 프로시저를 제공해야 합니다.
첫 번째 마법사 단계에서는 데이터베이스를 묻는 메시지를 표시합니다. 드롭다운 목록에는 웹 애플리케이션 폴더 App_Data
에 있는 데이터베이스와 서버 탐색기의 데이터 연결 노드에 추가된 데이터베이스가 포함됩니다. 폴더의 Web.config
데이터베이스 App_Data
에 대한 NORTHWIND.MDF
연결 문자열 프로젝트 파일에 이미 추가했으므로 드롭다운 목록에는 해당 연결 문자열 NORTHWINDConnectionString
대한 참조가 포함됩니다. 드롭다운 목록에서 이 항목을 선택하고 다음을 클릭합니다.
그림 7: 드롭다운 목록에서 선택 NORTHWINDConnectionString
데이터베이스를 선택한 후 마법사는 쿼리에 데이터를 반환하도록 요청합니다. 반환할 테이블 또는 뷰의 열을 지정하거나 사용자 지정 SQL 문을 입력하거나 저장 프로시저를 지정할 수 있습니다. 사용자 지정 SQL 문 또는 저장 프로시저 지정 및 테이블 또는 보기 라디오 단추에서 열 지정을 통해 이 선택 항목 간에 전환할 수 있습니다.
참고 항목
이 첫 번째 예제에서는 테이블 또는 뷰 옵션에서 열 지정을 사용하겠습니다. 이 자습서의 뒷부분에서 마법사로 돌아가서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 살펴봅니다.
그림 8에서는 테이블 또는 보기 라디오 단추에서 열 지정을 선택할 때 문 선택 구성 화면을 보여 줍니다. 드롭다운 목록에는 Northwind 데이터베이스의 테이블 및 뷰 집합이 포함되어 있으며, 선택한 테이블 또는 뷰 열이 아래 확인란 목록에 표시됩니다. 이 예제에서는 테이블에서 , ProductName
및 UnitPrice
열을 Products
반환ProductID
해 보겠습니다. 그림 8에서 볼 수 있듯이 이러한 항목을 선택한 후 마법사는 결과 SQL 문을 SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]
표시합니다.
그림 8: 테이블에서 데이터 Products
반환
테이블에서 열 및 UnitPrice
열을 반환ProductID
ProductName
하도록 마법사를 Products
구성한 후 다음 단추를 클릭합니다. 이 최종 화면에서는 이전 단계에서 구성한 쿼리의 결과를 검사할 수 있습니다. 쿼리 테스트 단추를 클릭하면 구성된 SELECT
문이 실행되고 결과가 표에 표시됩니다.
그림 9: 쿼리 테스트 단추를 클릭하여 쿼리 검토 SELECT
마법사를 완료하려면 마침을 클릭합니다.
ObjectDataSource와 마찬가지로 SqlDataSource 마법사는 컨트롤의 속성, 즉 속성에 ConnectionString
SelectCommand
만 값을 할당합니다. 마법사를 완료한 후 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
합니다.
그림 10: GridView를 추가하고 SqlDataSource 컨트롤에 바인딩(전체 크기 이미지를 보려면 클릭)
GridView 스마트 태그의 드롭다운 목록에서 SqlDataSource 컨트롤을 선택하면 Visual Studio는 데이터 원본 컨트롤에서 반환된 각 열에 대해 GridView에 BoundField 또는 CheckBoxField를 자동으로 추가합니다. SqlDataSource는 세 개의 ProductID
ProductName
데이터베이스 열을 반환하므로 UnitPrice
GridView에는 세 개의 필드가 있습니다.
잠시 시간을 내어 GridView의 세 개의 BoundFields를 구성합니다. 필드 속성을 ProductName
HeaderText
제품 이름으로 변경하고 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
ProductName
값과 UnitPrice
값을 나열합니다.
그림 11: GridView는 각 제품의 ProductID
및 UnitPrice
ProductName
값을 표시합니다(전체 크기 이미지를 보려면 클릭).
페이지가 방문되면 GridView는 해당 데이터 원본 제어 메서드를 Select()
호출합니다. ObjectDataSource 컨트롤을 사용할 때 클래스 메서드 GetProducts()
를 호출했습니다ProductsBLL
. 그러나 SqlDataSource를 사용하여 메서드는 Select()
지정된 데이터베이스에 대한 연결을 설정하고 (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]
이 예제에서는) 발급 SelectCommand
합니다. SqlDataSource는 GridView가 열거하는 결과를 반환하여 반환된 각 데이터베이스 레코드에 대해 GridView에 행을 만듭니다.
기본 제공 데이터 웹 컨트롤 기능 및 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
이름을 지정합니다.
그림 12: 명명된 새 SqlDataSource 컨트롤 만들기 ProductsWithCategoryInfoDataSource
다음 화면에서 데이터베이스를 지정하라는 메시지가 표시됩니다. 그림 7에서 했던 것처럼 드롭다운 목록에서 선택하고 NORTHWINDConnectionString
다음을 클릭합니다. 문 선택 구성 화면에서 사용자 지정 SQL 문 또는 저장 프로시저 라디오 단추를 선택하고 다음을 클릭합니다. 그러면 SELECT, UPDATE, INSERT 및 DELETE 레이블이 지정된 탭을 제공하는 사용자 지정 문 또는 저장 프로시저 정의 화면이 표시됩니다. 각 탭에서 텍스트 상자에 사용자 지정 SQL 문을 입력하거나 드롭다운 목록에서 저장 프로시저를 선택할 수 있습니다. 이 자습서에서는 사용자 지정 SQL 문을 입력하는 것을 살펴보겠습니다. 다음 자습서에는 저장 프로시저를 사용하는 예제가 포함되어 있습니다.
그림 13: 사용자 지정 SQL 문을 입력하거나 저장 프로시저 선택
사용자 지정 SQL 문을 텍스트 상자에 직접 입력하거나 쿼리 작성기 단추를 클릭하여 그래픽으로 생성할 수 있습니다. 쿼리 작성기 또는 텍스트 상자에서 Products
다음 쿼리를 사용하여 테이블에서 제품 Categories
CategoryName
s를 검색하는 a JOIN
를 사용하여 테이블에서 필드와 ProductName
필드를 반환 ProductID
합니다.
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Categories
INNER JOIN Products ON
Categories.CategoryID = Products.CategoryID
그림 14: 쿼리 작성기를 사용하여 쿼리를 그래픽으로 생성할 수 있습니다.
쿼리를 지정한 후 [다음]을 클릭하여 쿼리 테스트 화면으로 진행합니다. 마침을 클릭하여 SqlDataSource 마법사를 완료합니다.
마법사를 완료한 후 GridView에는 쿼리에서 반환된 열과 CategoryName
다음 선언적 태그를 표시하는 ProductID
ProductName
세 개의 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>
그림 15: GridView는 각 제품의 ID, 이름 및 관련 범주 이름을 표시합니다(전체 크기 이미지를 보려면 클릭).
요약
이 자습서에서는 SqlDataSource 컨트롤을 사용하여 데이터를 쿼리하고 표시하는 방법을 알아보았습니다. ObjectDataSource와 마찬가지로 SqlDataSource는 프록시 역할을 하며 데이터에 액세스하는 선언적 접근 방식을 제공합니다. 해당 속성은 연결할 데이터베이스와 실행할 SQL SELECT
쿼리를 지정합니다. 속성 창 또는 DataSource 구성 마법사를 사용하여 지정할 수 있습니다.
이 자습서에서 검사한 쿼리 예제는 SELECT
지정된 쿼리의 모든 레코드를 반환했습니다. 그러나 SqlDataSource 컨트롤에는 값이 프로그래밍 방식으로 할당되거나 지정된 원본에서 자동으로 끌어오는 매개 변수가 있는 절이 포함될 WHERE
수 있습니다. 다음 자습서에서는 매개 변수가 있는 쿼리를 만들고 사용하는 방법을 살펴보겠습니다.
행복한 프로그래밍!
추가 정보
이 자습서에서 설명하는 항목에 대한 자세한 내용은 다음 리소스를 참조하세요.
- SqlDataSource 컨트롤 개요
- ASP.NET 빠른 시작 자습서: SqlDataSource 컨트롤
- Web.config
<connectionStrings>
요소 - 데이터베이스 연결 문자열 참조
작성자 정보
7개의 ASP/ASP.NET 책의 저자이자 4GuysFromRolla.com 창립자인 Scott Mitchell은 1998년부터 Microsoft 웹 기술을 연구해 왔습니다. Scott은 독립 컨설턴트, 트레이너 및 작가로 일합니다. 그의 최신 책은 샘스 티치 자신 ASP.NET 24 시간에 2.0입니다. 그는 에서 mitchell@4GuysFromRolla.com찾을 http://ScottOnWriting.NET수있는 자신의 블로그를 통해 도달 할 수 있습니다 .
특별 감사
이 자습서 시리즈는 많은 유용한 검토자가 검토했습니다. 이 자습서의 수석 검토자는 수잔 코너리, 버나데트 리, 데이비드 수루였습니다. 예정된 MSDN 문서를 검토하는 데 관심이 있으신가요? 그렇다면 선을 놓습니다 mitchell@4GuysFromRolla.com.