이번 섹션에서 제가 이야기하고 싶은 부분은 모두가 매우 우려하고 관심을 가질 부분입니다. 그리고 제가 튜토리얼 작성을 가장 잘하는 부분이기도 합니다 - ADO 데이터베이스 접근을 생각해보면요. , 작년에 "데이터베이스 액세스"에 대한 일련의 기사를 쓴 것으로 기억합니다. ㅎㅎ 그러니 레코드 세트 같은 것을 이해하기 어렵다면 먼저 내 기사를 읽어 보시기 바랍니다. .가자!
ADO(ActiveX Data Objects, ActiveX Data Objects)란 무엇인가요? ADO는 매우 간단한 아이디어로, 한 가지 방식으로만 데이터에 액세스할 수 있도록 하는 아이디어입니다. 기존 데이터 액세스 기술을 사용하고 이를 통합하는 것입니다. ADO를 이해하지 못한다면 ODBC를 생각해 보십시오. 실제로 우리가 ASP를 수행할 때 ADO를 사용했다는 것을 기억하십니까? ? set conn=Server.CreateObject("ADODB.Connection")을 여러 번 사용해 보셨나요? 예, 그렇습니다. ADO에 대한 몇 가지 개념적인 내용은 직접 확인하시기 바랍니다. 이해하지 마세요. M$가 데이터에 액세스하기 위해 제공하는 도구라고 생각하세요!
좋아요, 다음 예는 M$ access 2000의 데이터베이스를 기반으로 합니다. 그 구조는 다음과 같습니다. 테이블 이름은 Category 이고 파일 이름은 BugTypes.mdb입니다. 빨리 하나 만드세요.
Category ID Category Name
1 Bugbash stuff
2 Appweek Bugs
3 .NET Reports
4 내부 지원
알겠습니다. 먼저 모든 프로그램을 작성한 다음 문장별로 맛보겠습니다.
000: // ADOadosample.cs
001: using System;
002: System.Data 사용;
003: System.Data.ADO 사용;
004:
005: 공용 클래스 MainClass
006: {
007: 공용 정적 void Main( )
008: {
009: // 연결 문자열을 설정하고 명령 문자열 010을 선택합니다. string strAccessConn = "PRovider=Microsoft.Jet.OLEDB.4.0;Data Source=BugTypes.MDB";
011 : string strAccessSelect = "SELECT * FROM Category";
012:
013: //레코드 세트를 생성하고 카테고리 테이블을 채웁니다
014: DataSet myDataSet = new DataSet();
015: myDataSet.Tables.Add("Categories");
016:
017: //ADO 인스턴스 생성 018: ADOConnection myAccessConn = new ADOConnection(strAccessConn);
019: ADODataSetCommand myAccessDataSetCmd = new ADODataSetCommand( );
020: myAccessDataSetCmd.SelectCommand = new ADOCommand(strAccessSelect,myAccessConn);
021:
022: myAccessConn.Open();
023: 시도
024: {
025: myAccessDataSetCmd.FillDataSet(myDataSet,"범주");
026: }
027: 마지막으로
028: {
029: myAccessConn.Close();
030: }
031:
032: try
033: {
034: // 레코드 세트에는 여러 테이블이 포함될 수 있으므로 이를 배열에 넣습니다. 035: DataTable[] dta = myDataSet.Tables All;
036: foreach (DataTable dt in dta)
037: {
038: Console.WriteLine("Found data table {0}", dt.TableName);
039: }
040:
041: //다음 두 줄의 프로그램은 레코드 세트에서 데이터 세트의 테이블 수를 가져오는 두 가지 방법을 보여줍니다.
042: Console.WriteLine("{0} tables in data set ", myDataSet .Tables.Count);
043: Console.WriteLine("{0} tables in data set", dta.Length);
044: //다음 프로그램 줄은 레코드에서 읽는 방법을 보여줍니다. set은 테이블 이름을 사용하여 정보를 얻습니다
045: Console.WriteLine("{0} 행 in 카테고리 테이블", myDataSet.Tables["Categories"].Rows.Count);
046: / /Column 정보는 데이터베이스에서 자동으로 가져오므로 다음 코드 047을 사용할 수 있습니다. Console.WriteLine("{0} columns in Category table", myDataSet.Tables["Categories"].Columns.Count);
048: DataColumn[] drc = myDataSet.Tables["Categories"].Columns.All;
049: int i = 0;
050: foreach(drc의 DataColumn dc)
051: {
052: //열 첨자, 열 이름 및 데이터 유형을 인쇄합니다. 053: Console.WriteLine("열 이름[{0}]은(는) {1}입니다. 유형은 {2}입니다.",i++, dc.ColumnName, dc .DataType);
054: }
055: DataRow[] dra = myDataSet.Tables["Categories"].Rows.All;
056: foreach(DataRow dr in dra)
057: {
058: //CategoryID 및 CategoryName059 인쇄: Console.WriteLine("CategoryName[{0}]은(는) {1}", dr[0], dr[1]);
060: }
061: }
062: catch(예외 e)
063: {
064: Console.WriteLine("앗 이런. 예외가 발생했습니다:n{0}", e.Message);
065: }
066: }
067: }
이 예는 제가 예를 잘못 선택한 것 뿐인 것 같네요. 하지만 잘 분석해 보면 그래도 이해가 됩니다. . 이제 이 예에서 몇 가지 특별한 사항에 대해 이야기하겠습니다. 첫 번째는 ASP와 달리 명령 문자열이 015에 정확히 이 작업을 수행한다는 점입니다. 행의 Add("Categories") 문입니다. 이는 데이터베이스의 Category 테이블을 채우는 것이 아니라 단지 빈 테이블을 만드는 것이며 025는 실제 데이터를 채우는 것입니다.
이 결과는 다음과 같습니다. 예는 다음과 같습니다.
찾은 데이터 테이블 카테고리
데이터 세트의 테이블 1개
데이터 세트의 테이블 1개
카테고리 테이블의 4개 행
카테고리 테이블의 열 2개
열 이름[0]은 CategoryID, Int32
열 이름[1]은 CategoryName이고, System.String
CategoryName[1]은 Bugbash 항목입니다.
CategoryName[2]은 Appweek Bugs
CategoryName[3]은 .NET 보고서입니다.
CategoryName[4]은 내부 지원입니다
그럼 그만 얘기하자 SUNWEN은 정말 자고 싶어하고 더 이상 음악이 작동하지 않습니다. 하하 이 예를 완전히 이해하려면 많은 노력이 필요합니다.
위 내용은 SUNWEN 튜토리얼 - C# 고급(8) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!