데이터 소스 컨트롤은 데이터 바인딩된 컨트롤과 상호 작용하고 복잡한 데이터 바인딩 프로세스를 숨깁니다. 이는 데이터 바인딩된 컨트롤에 데이터를 제공하고 삽입, 삭제 및 업데이트와 같은 작업 실행을 지원하는 도구입니다.
각 데이터 소스 컨트롤은 데이터베이스, XML 파일 또는 사용자 지정 클래스와 연결된 특수 데이터 공급자를 래핑하고 다음을 지원합니다.
연결 관리
데이터 선택
페이징, 캐싱 등과 같은 프레젠테이션 측면을 관리합니다.
데이터 조작
ASP.NET에는 SQL 서버, ODBC 또는 OLE DB 서버, XML 파일 및 비즈니스 개체에서 데이터를 얻기 위해 사용할 수 있는 많은 데이터 소스 컨트롤이 있습니다.
데이터 유형에 따라 이러한 컨트롤은 두 가지 범주로 나눌 수 있습니다.
계층화된 데이터 소스 제어
테이블 기반 데이터 소스 제어
계층적 데이터에 대한 데이터 소스 컨트롤은 다음과 같습니다.
XMLDataSource - 스키마 정보가 있거나 없는 XML 파일과 문자열을 바인딩할 수 있습니다.
SiteMapDataSource - 사이트맵 정보를 제공하는 공급자를 바인딩할 수 있습니다.
테이블 형식 데이터에 사용되는 데이터 소스 컨트롤은 다음과 같습니다.
데이터 소스 제어 | 설명하다 |
---|---|
SQL데이터소스 | 이는 OLEDB 및 QDBC를 통해 사용할 수 있는 데이터 소스를 포함하여 SQL 데이터를 반환하는 ADO.NET 데이터 공급자에 대한 연결을 나타냅니다. |
객체데이터소스 | 데이터를 반환하는 사용자 정의 .Net 비즈니스 개체를 바인딩할 수 있습니다. |
Linqdata소스 | Linq-t0-SQL 쿼리 결과를 바인딩할 수 있습니다. (ASP.NET 3.5에서만 지원됨) |
액세스데이터소스 | 이는 Microsoft Access 데이터베이스에 대한 연결을 나타냅니다. |
데이터 소스 뷰는 정렬, 필터링 등과 같은 다양한 데이터 작업을 위해 설계된 사용자 정의 데이터 뷰를 나타내는 DataSourceView 클래스의 개체입니다.
DataSourceView 클래스는 모든 데이터 소스 뷰 클래스의 기본 클래스로 사용되며 데이터 소스 컨트롤의 성능을 정의합니다.
다음 표에서는 DataSourceView 클래스의 속성을 제공합니다.
재산 | 설명하다 |
---|---|
삭제 가능 | 잠재적인 데이터 소스 삭제가 허용되는지 여부를 나타냅니다. |
삽입 가능 | 잠재적인 데이터 소스 삽입을 허용할지 여부를 나타냅니다. |
캔페이지 | 잠재적인 데이터 소스의 페이징이 허용되는지 여부를 나타냅니다. |
검색 가능TotalRowCount | 전체 행 정보를 얻을 수 있는지 여부를 나타냅니다. |
정렬 가능 | 데이터를 정렬할 수 있는지 여부를 나타냅니다. |
업데이트 가능 | 잠재적인 데이터 원본에 대한 업데이트가 허용되는지 여부를 나타냅니다. |
이벤트 | 데이터 소스 뷰가 나타내는 이벤트 핸들러 목록을 가져옵니다. |
이름 | 뷰의 이름입니다. |
다음 표에서는 DataSourceView 클래스의 메서드를 제공합니다.
방법 | 설명하다 |
---|---|
실행할 수 있음 | 지정된 명령을 실행할 수 있는지 여부를 확인합니다. |
명령 실행 | 지정된 명령을 실행합니다. |
실행삭제 | DataSourceView 개체가 나타내는 데이터 목록에 대해 삭제 작업을 수행합니다. |
실행삽입 | DataSourceView 개체가 나타내는 데이터 목록에 대해 삽입 작업을 수행합니다. |
실행선택 | 기본 데이터 저장소에서 데이터 목록을 가져옵니다. |
업데이트 실행 | DataSourceView 개체가 나타내는 데이터 목록에 대해 업데이트 작업을 수행합니다. |
삭제 | 뷰와 연결된 데이터에 대해 삭제 작업을 수행합니다. |
끼워 넣다 | 뷰와 연관된 데이터에 대해 삽입 작업을 수행합니다. |
선택하다 | 쿼리된 데이터를 반환합니다. |
업데이트 | 뷰와 연결된 데이터에 대해 업데이트 작업을 수행합니다. |
OnDataSourceViewChanged | DataSourceViewChanged 이벤트를 발생시킵니다. |
지원되지 않는 기능 오류 발생 | ExecuteSelect 작업에 필요한 기능과 뷰에서 지원되는 기능을 비교하기 위해 raiseUnsupportedCapabilitiesError 메서드에 의해 호출됩니다. |
SqlDataSource 컨트롤은 SQL Server 또는 Oracle 데이터베이스와 같은 관련 데이터베이스에 대한 연결이나 OLEDB 또는 ODBC(Open Database Connectivity)를 통해 액세스할 수 있는 데이터에 대한 연결을 나타냅니다. 데이터 연결은 두 가지 중요한 속성인 ConnectionString과 ProviderName을 통해 완료됩니다.
다음 코드 조각은 컨트롤의 기본 구문을 제공합니다.
<asp:SqlDataSource runat="server" ID="MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString='<%$ ConnectionStrings:LocalNWind %>' SelectionCommand= "SELECT * FROM EMPLOYEES" /><asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />
기본 데이터에 대한 다양한 데이터 작업 구성은 데이터 소스 제어의 다양한 속성(속성 집합)에 따라 달라집니다.
다음 표에서는 컨트롤의 프로그래밍 인터페이스를 제공하는 SqlDataSource 컨트롤의 관련 속성 집합을 제공합니다.
속성 그룹 | 설명하다 |
---|---|
삭제명령,삭제매개변수,삭제명령유형 | 기본 데이터에서 삭제할 SQL 문, 매개 변수 및 행 유형을 가져오거나 설정합니다. |
FilterExpression,FilterParameters | 데이터 필터링 문자열과 매개변수를 가져오고 설정합니다. |
InsertCommand,InsertParameters,InsertCommandType | 기본 데이터에 삽입된 SQL 문, 매개 변수 및 행 유형을 가져오거나 설정합니다. |
SelectCommand,SelectParameters,SelectCommandType | 기본 데이터에서 검색된 SQL 문, 매개 변수 및 행 유형을 가져오거나 설정합니다. |
정렬매개변수이름 | 데이터를 정렬하기 위해 명령 저장 프로시저에서 사용할 입력 매개 변수의 이름을 가져오거나 설정합니다. |
UpdateCommand,UpdateParameters,UpdateCommandType | 기본 데이터에서 업데이트된 SQL 문, 매개 변수 및 행 유형을 가져오거나 설정합니다. |
다음 코드 조각은 데이터 작업을 수행하는 데 사용할 수 있는 데이터 소스 컨트롤을 보여줍니다.
<asp:SqlDataSource runat="server" ID= "MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString=' <%$ ConnectionStrings:LocalNWind %>' SelectCommand= "SELECT * FROM EMPLOYEES" UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame" DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid" FilterExpression= "EMPLOYEEID > 10"> ..... .....</asp:SqlDataSource>
ObjectDataSource 컨트롤을 사용하면 사용자 정의 클래스에서 해당 메서드의 출력을 데이터 바인딩된 컨트롤에 연결할 수 있습니다. 이 클래스의 프로그래밍 인터페이스는 SqlDataSource 컨트롤과 거의 동일합니다.
다음은 고객 개체 바인딩의 두 가지 중요한 측면입니다.
바인딩 가능한 클래스에는 기본 생성자가 있어야 하고 상태 비저장이어야 하며 의미 체계를 선택, 업데이트, 삽입 및 삭제하도록 매핑되는 메서드가 있어야 합니다.
개체는 한 번에 한 항목씩 업데이트해야 하며 일괄 작업은 지원되지 않습니다.
이 컨트롤을 사용하는 예를 바로 살펴보겠습니다. 학생 클래스는 데이터 소스 개체와 함께 사용되는 클래스입니다. 이 클래스에는 학생 ID, 이름, 도시라는 세 가지 속성이 있습니다. 여기에는 데이터를 검색하기 위한 기본 생성자와 GetStudents 메서드가 있습니다.
학생 수업:
public class Student{ public int StudentID { get; set; } public string Name { get; set; } public string City { get; set; } public Student() { } public DataSet GetStudents() { DataSet ds = new DataSet(); DataTable dt = new DataTable("Students"); dt.Columns.Add("StudentID", typeof(System.Int32)); dt.Columns.Add("StudentName", typeof(System.String)); dt.Columns.Add("StudentCity", typeof(System.String)); dt.Rows.Add(new object[] { 1, "MH Kabir", "Calcutta" }); dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" }); ds.Tables.Add(dt); return ds; }}
연결을 데이터 소스 개체에 바인딩하고 데이터를 검색하려면 다음 단계를 수행하십시오.
새 웹페이지를 만듭니다.
클래스(Student.cs)를 마우스 오른쪽 버튼으로 클릭하고 클래스 템플릿을 추가한 후 위 코드를 내부에 배치하여 솔루션 탐색기 프로젝트에 추가합니다.
애플리케이션이 클래스에 대한 참조를 사용할 수 있도록 메서드를 설정합니다.
웹 양식에 데이터 소스 제어 개체를 배치합니다.
개체를 선택하여 데이터 소스를 구성합니다.
다양한 데이터 작업에 대한 데이터 방법을 선택하세요. 이 예에는 메서드가 하나만 있습니다.
페이지에 그리드 보기와 같은 데이터 바인딩된 컨트롤을 배치하고 데이터 소스 개체를 잠재적인 데이터 소스로 선택합니다.
이 단계에서 디자인 뷰는 다음과 같아야 합니다.
프로젝트를 실행하면 학생 수업에서 하드 코딩된 조상을 검색합니다.
AccessDataSource 컨트롤은 Access 데이터베이스에 대한 연결을 나타냅니다. 이는 SqlDataSource 컨트롤을 기반으로 하며 더 간단한 프로그래밍 인터페이스를 제공합니다. 다음 코드 조각은 데이터 소스의 기본 구문을 제공합니다.
<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"></asp:AccessDataSource>
AccessDataSource 컨트롤은 읽기 전용 모드로 데이터베이스를 엽니다. 그러나 삽입, 업데이트 또는 삭제 작업을 수행하는 데에도 사용할 수 있습니다. 이는 ADO.NET 명령과 매개변수 세트를 사용하여 수행됩니다.
Access 데이터베이스는 일반 텍스트이고 기본 ASP.NET 응용 프로그램 계정에 데이터베이스 파일에 대한 쓰기 권한이 있을 수 있으므로 ASP.NET 응용 프로그램 내의 Access 데이터베이스에 대한 업데이트는 문제가 됩니다.