ADO.NET은 프런트 엔드 컨트롤과 백 엔드 데이터베이스 간의 브리지를 제공합니다. ADO.NET 개체는 데이터 표시 개체와 상호 작용하는 모든 데이터 액세스 작업 및 컨트롤을 캡슐화합니다. 따라서 데이터 이동의 세부 사항은 숨겨집니다.
다음 다이어그램은 ADO.NET 개체를 전체적으로 보여줍니다.
데이터 세트는 데이터베이스의 하위 세트를 나타냅니다. 데이터베이스에 대한 지속적인 연결이 없습니다. 데이터베이스를 업그레이드하려면 다시 연결해야 합니다. DataSet에는 DataTable 및 DataRelation 개체가 포함되어 있습니다. DataRelation 개체는 두 테이블 간의 관계를 나타냅니다.
다음 표는 DataSet 클래스의 몇 가지 중요한 속성입니다.
재산 | 설명하다 |
---|---|
대소문자 구분 | 데이터 테이블과 비교할 문자열이 대소문자를 구분하는지 여부를 나타냅니다. |
컨테이너 | 구성요소를 위한 공간을 확보하십시오. |
데이터 세트 이름 | 기존 데이터 컬렉션의 이름을 가져오거나 설정합니다. |
기본 보기 관리자 | 데이터 컬렉션의 데이터 보기를 반환합니다. |
디자인 모드 | 구성 요소가 디자인 모드에 있는지 여부를 나타냅니다. |
제약조건 시행 | 파일을 업로드하려고 할 때 제한 사항이 준수되는지 여부를 나타냅니다. |
이벤트 | 이 구성요소와 관련된 이벤트 핸들러 목록을 가져옵니다. |
확장 속성 | DataSet과 관련된 사용자 지정 사용자 정보 컬렉션을 가져옵니다. |
오류 발생 | 오류가 있는지 표시합니다. |
초기화됨 | DataSet이 초기화되었는지 여부를 나타냅니다. |
장소 | 문자열을 테이블과 비교하는 데 사용되는 정보를 가져오거나 설정합니다. |
네임스페이스 | DataSet의 네임스페이스를 가져오거나 설정합니다. |
접두사 | 네임스페이스의 별칭인 XML 접두사를 가져오거나 설정합니다. |
처지 | DataRelation 개체의 컬렉션을 반환합니다. |
테이블 | DataTable 개체의 컬렉션을 반환합니다. |
다음 표에는 DataSet 클래스의 몇 가지 중요한 메서드가 나열되어 있습니다.
방법 | 설명하다 |
---|---|
변경 사항 수락 | DataSet 또는 이 메서드 로드로 인한 모든 변경 사항을 허용합니다. |
시작초기화 | DataSet 초기화를 시작합니다. 이 초기화는 런타임에 발생합니다. |
분명한 | 데이터를 지웁니다. |
클론 | 모든 DataTable 구조, 관계 및 제약 조건을 포함하여 DataSet의 구조를 복제합니다. 그러나 데이터는 복제되지 않습니다. |
복사 | 데이터 및 구조를 복사합니다. |
생성데이터리더() | Tables 컬렉션의 테이블이 나타나는 순서와 동일한 순서로 각 DataTable에 대한 결과 집합이 포함된 DataTableReader를 반환합니다. |
CreateDataReader(데이터테이블[]) | 각 DataTable에 대해 하나의 결과 집합이 있는 DataTableReader를 반환합니다. |
종료초기화 | 양식에 사용되거나 다른 구성 요소에서 사용되는 DataSet의 초기화를 종료합니다. 초기화는 런타임에 발생합니다. |
같음(객체) | 지정된 개체가 현재 개체와 같은지 여부를 확인합니다. |
마무리 | 추가 정리를 수행하려면 리소스를 해제하세요. |
변경사항 가져오기 | DataSet이 로드된 이후 또는 AcceptChanges가 마지막으로 호출된 이후 DataSet에 대한 모든 변경 사항이 포함된 DataSet의 복사본을 가져옵니다. |
GetChanges(DataRowState) | 마지막으로 로드된 이후 또는 AcceptChanges가 호출된 이후 데이터 세트에 대한 모든 변경 사항을 포함하는 DataRowState로 필터링된 DataSet의 복사본을 가져옵니다. |
GetDataSet스키마 | DataSet에 대한 XmlSchemaSet의 복사본을 가져옵니다. |
GetObjectData | DataSet을 직렬화하는 데 필요한 데이터로 직렬화된 정보 개체를 채웁니다. |
GetType | 현재 인스턴스의 유형을 가져옵니다. |
GetXML | DataSet에 저장된 데이터의 XML 표현을 반환합니다. |
GetXML스키마 | DataSet에 저장된 데이터의 XML 표현에 대한 XML 스키마를 반환합니다. |
HasChanges() | 새 행, 삭제된 행 또는 수정된 행을 포함하여 DataSet이 변경되었는지 여부를 나타내는 값을 가져옵니다. |
HasChanges(DataRowState) | DataSet에 새 행, 삭제된 행 또는 수정된 행을 포함하여 DataRowState 필터링된 변경 사항이 있는지 여부를 나타내는 값을 가져옵니다. |
IsBinarySerialized | DataSet의 직렬화된 표현 형식을 확인하세요. |
로드(IDataReader, LoadOption, DataTable[]) | 제공된 IDataReader를 사용하여 DataSet을 데이터 소스의 값으로 채우고 DataTable 인스턴스 배열을 사용하여 스키마 및 네임스페이스 정보를 제공합니다. |
로드(IDataReader, LoadOption, 문자열[]) | 제공된 IDataReader를 사용하고 문자열 배열을 사용하여 DataSet의 테이블 이름을 제공하는 데이터 소스의 값으로 DataSet을 채웁니다. |
병합() | DataSet, DataTable 또는 DataRow 개체의 지정된 배열을 현재 DataSet 또는 DataTable에 병합합니다. 이 메서드에는 다양한 오버로드가 있습니다. |
XML 읽기() | XML 스키마와 데이터를 DataSet으로 읽어옵니다. 이 메서드에는 다양한 오버로드가 있습니다. |
ReadXML스키마(0) | XML 스키마를 DataSet으로 읽어옵니다. 이 메서드에는 다양한 오버로드가 있습니다. |
변경 사항 거부 | DataSet이 생성된 이후 또는 마지막으로 DataSet.AcceptChanges가 호출된 이후 DataSet에 대한 모든 변경 사항을 롤백합니다. |
쓰기XML() | DataSet에서 XML 데이터 및 스키마를 작성합니다. 이 메서드에는 다양한 오버로드가 있습니다. |
쓰기XML스키마() | DataSet에서 XML 스키마를 작성합니다. 이 메서드에는 다양한 오버로드가 있습니다. |
DataTable 클래스는 데이터베이스의 테이블을 나타냅니다. 여기에는 다음과 같은 중요한 속성이 있습니다. PrimaryKey 속성을 제외한 대부분의 속성은 읽기 전용입니다.
재산 | 설명하다 |
---|---|
아동관계 | 이 DataTable의 하위 관계 컬렉션을 가져옵니다. |
열 | 이 테이블에 속하는 열 컬렉션을 가져옵니다. |
제약 | 이 테이블에서 유지 관리하는 제약 조건 컬렉션을 가져옵니다. |
데이터세트 | 이 테이블이 속한 DataSet을 가져옵니다. |
기본 보기 | 필터링된 보기 또는 커서 위치를 포함할 수 있는 테이블의 사용자 정의 보기를 가져옵니다. |
상위 관계 | 이 DataTable의 부모 관계 컬렉션을 가져옵니다. |
기본키 | 데이터 테이블의 기본 키 역할을 하는 열 배열을 가져오거나 설정합니다. |
행 | 이 테이블에 속하는 행 컬렉션을 가져옵니다. |
다음 표에는 DataTable 클래스의 몇 가지 중요한 메서드가 나열되어 있습니다.
방법 | 설명하다 |
---|---|
변경 사항 수락 | 로드된 이후 또는 AcceptChanges가 마지막으로 호출된 이후 이 DataSet에 대한 모든 변경 사항을 커밋합니다. |
분명한 | 모든 테이블에서 모든 행을 제거하여 모든 데이터의 DataSet을 지웁니다. |
변경사항 가져오기 | 마지막으로 로드된 이후 또는 AcceptChanges가 호출된 이후 DataSet에 대한 모든 변경 사항이 포함된 DataSet의 복사본을 가져옵니다. |
GetErrors | 오류가 포함된 DataRow 개체의 배열을 가져옵니다. |
ImportRows | 모든 속성 설정과 초기 및 현재 값을 유지하면서 DataRow를 DataTable에 복사합니다. |
데이터 행 로드 | 특정 행을 찾아 업데이트하세요. 일치하는 행이 없으면 지정된 값으로 새 행이 생성됩니다. |
병합 | DataSet, DataTable 또는 DataRow 개체의 지정된 배열을 현재 DataSet 또는 DataTable에 병합합니다. |
새 행 | 테이블과 동일한 스키마를 사용하여 새 DataRow를 만듭니다. |
변경 사항 거부 | 테이블이 로드된 이후 또는 AcceptChanges가 마지막으로 호출된 이후 테이블에 적용된 모든 변경 사항을 롤백합니다. |
다시 놓기 | 모든 테이블을 지우고 DataSet에서 모든 관계, 외부 제약 조건 및 테이블을 제거합니다. 서브클래스는 Reset을 재정의하여 DataSet을 원래 상태로 복원해야 합니다. |
선택하다 | DataRow 개체의 배열을 가져옵니다. |
DataRow 개체는 테이블의 행을 나타내며 다음과 같은 중요한 속성을 갖습니다.
재산 | 설명하다 |
---|---|
오류 발생 | 오류가 있는지 여부를 나타냅니다. |
품목 | 특정 열에 저장된 데이터를 가져오거나 설정합니다. |
항목 배열 | 이 행의 모든 값을 가져오거나 설정합니다. |
테이블 | 상위 테이블을 반환합니다. |
다음 표에는 DataRow 클래스의 중요한 메서드가 나열되어 있습니다.
방법 | 설명하다 |
---|---|
변경 사항 수락 | 이 메서드가 호출된 이후의 모든 변경 사항을 적용합니다. |
시작편집 | 편집 작업을 시작합니다. |
취소편집 | 편집 작업을 취소하십시오. |
삭제 | 데이터 행을 삭제합니다. |
끝편집 | 편집 작업을 종료합니다. |
GetChildRows | 이 행의 하위 행을 가져옵니다. |
GetParentRow | 상위 행을 가져옵니다. |
GetParentRows | DataRow의 상위 행을 가져옵니다. |
변경 사항 거부 | AcceptChanges가 호출된 후 변경된 모든 내용을 롤백합니다. |
DataAdapter 개체는 DataSet 개체와 데이터베이스 사이의 중개자 역할을 합니다. 이는 DataSet이 여러 데이터베이스 또는 기타 데이터 소스에서 데이터를 얻는 데 도움이 됩니다.
DataReader 개체는 DataSet과 DataAdapter를 결합하는 대신 사용할 수 있습니다. 이 개체는 데이터베이스의 데이터 레코드에 대한 직접적인 액세스를 제공합니다. 이러한 개체는 목록을 채운 다음 연결을 끊는 등의 읽기 전용 액세스에만 적합합니다.
DbConnection 개체는 데이터 소스에 대한 연결을 나타냅니다. 이 연결은 서로 다른 명령 개체 간에 공유될 수 있습니다. DbCommand 개체는 데이터를 검색하거나 조작하기 위해 데이터베이스로 전송되는 명령이나 저장 프로세스를 나타냅니다.
지금까지 우리는 컴퓨터의 테이블과 데이터베이스를 사용해 왔습니다. 이번 경우에는 테이블을 생성하고 열, 행, 데이터를 추가하고 GridView 컨트롤을 사용하여 테이블을 표시해 보겠습니다.
소스 파일 코드는 다음과 같습니다.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Untitled Page </title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body></html>
파일의 코드는 다음과 같습니다.
namespace createdatabase{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet ds = CreateDataSet(); GridView1.DataSource = ds.Tables["Student"]; GridView1.DataBind(); } } private DataSet CreateDataSet() { //creating a DataSet object for tables DataSet dataset = new DataSet(); // creating the student table DataTable Students = CreateStudentTable(); dataset.Tables.Add(Students); return dataset; } private DataTable CreateStudentTable() { DataTable Students = new DataTable("Student"); // adding columns AddNewColumn(Students, "System.Int32", "StudentID"); AddNewColumn(Students, "System.String", "StudentName"); AddNewColumn(Students, "System.String", "StudentCity"); // adding rows AddNewRow(Students, 1, "MH Kabir", "Kolkata"); AddNewRow(Students, 1, "Shreya Sharma", "Delhi"); AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad"); AddNewRow(Students, 1, "Sunil Dubey", "Bikaner"); AddNewRow(Students, 1, "Rajat Mishra", "Patna"); return Students; } private void AddNewColumn(DataTable table, string columnType, string columnName) { DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType)); } //adding data into the table private void AddNewRow(DataTable table, int id, string name, string city) { DataRow newrow = table.NewRow(); newrow["StudentID"] = id; newrow["StudentName"] = name; newrow["StudentCity"] = city; table.Rows.Add(newrow); } }}
프로그램을 실행할 때 다음 측면을 관찰하십시오.
프로그램은 먼저 데이터 컬렉션을 만든 다음 GridView 컨트롤의 DataBind() 메서드를 사용하여 이를 바인딩합니다.
Createdataset() 메서드는 새 DataSet 개체를 만들고 추가 사용자 정의 CreateStudentTable() 메서드를 호출하여 테이블을 만든 다음 이를 DataSet의 테이블 컬렉션에 추가하는 사용자 정의 함수입니다.
CreateStudentTable() 메서드는 사용자 정의 AddNewColumn() 및 AddNewRow() 메서드를 호출하여 테이블의 열과 행을 만들고 행에 데이터를 추가합니다. 페이지가 실행되면 아래와 같이 테이블 행이 반환됩니다.