SUNWEN教程之----C#進階(八)

來源:互聯網
上載者:User
這一節我要講的是大家非常關心的,肯定也是非常感興趣的部分.嘿嘿,也是我寫教程最拿手的部分----ADO資料庫訪問.想到這,我就想起我在去年寫的"訪問資料庫"系列文章,嘿嘿!所以呢,如果你覺得對記錄集之類的東西比較難理解的話,我推薦你先看一看我的那幾篇文章.好了,讓我們開始吧!

什麼是ADO(ActiveX Data Objects譯作ActiveX資料對象),ADO是一個非常簡單的思想,一種讓你僅用一種方式去訪問資料的思想.ADO不算一個新的思想,僅是採用現有的資料訪問技術,將其融合起來.如果你不理解ADO,想一想ODBC吧!其實我們在搞asp的時候,就用到了ADO,還記得嗎,那個曾經被我們用過無數次的set conn=Server.CreateObject("ADODB.Connection")嗎?是的,就是它.至於ADO的一些概念性的東西,請大家自行查閱資料,不過,其實不瞭解也沒有關係,只把它想象成一個M$給我們的訪問資料的工具吧!

OK,下面的例子是以一個M$ access 2000的資料庫為基礎的,它的結構如下,表名是Categories,檔案名稱是BugTypes.mdb ,趕快建一個吧:

Category ID Category Name
1 Bugbash stuff
2 Appweek Bugs
3 .NET Reports
4 Internal support

好的,我先把所有的程式都寫出來,然後我們來一句一句的品嘗:

000: // ADO\adosample.cs
001: using System;
002: using System.Data;
003: using System.Data.ADO;
004:
005: public class MainClass
006: {
007: public static void Main ()
008: {
009: // 設定好連接字串和選擇命令字串010: string strAccessConn = "PRovider=Microsoft.Jet.OLEDB.4.0;Data Source=BugTypes.MDB";
011: string strAccessSelect = "SELECT * FROM Categories";
012:
013: //建立記錄集,並把Categories這個表填進去
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: try
024: {
025: myAccessDataSetCmd.FillDataSet(myDataSet,"Categories");
026: }
027: finally
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: //下面的幾行程式說明了如何從一個記錄集中依靠表格的名稱來取得資訊
045: Console.WriteLine("{0} rows in Categories table", myDataSet.Tables["Categories"].Rows.Count);
046: //列的資訊是自動從資料庫中得到的,所以我們可以用以下的代碼047: Console.WriteLine("{0} columns in Categories table", myDataSet.Tables["Categories"].Columns.Count);
048: DataColumn[] drc = myDataSet.Tables["Categories"].Columns.All;
049: int i = 0;
050: foreach (DataColumn dc in drc)
051: {
052: //列印出列的下標和列的名稱和資料類型053: Console.WriteLine("Column name[{0}] is {1}, of type {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}] is {1}", dr[0], dr[1]);
060: }
061: }
062: catch (Exception e)
063: {
064: Console.WriteLine("Oooops. Caught an exception:\n{0}", e.Message);
065: }
066: }
067: }
看起來,這個例子是有一些複雜的,只怪我例子選的不好,呵呵.不過,細細分析一下,還是可以理解的.我現在說一下這個例子中幾個特別的東東.第一就是不象在ASP中,一個命令字串被須被當作一個命令對象.020做的正是這個事情.注意,在015行有一個myDataSet.Tables.Add("Categories")語句,這並不是把資料庫中的Categories這個表填進去,只不過是建一個空表,而025才是真的填充資料.

這個例子的輸出是:

Found data table Categories
1 tables in data set
1 tables in data set
4 rows in Categories table
2 columns in Categories table
Column name[0] is CategoryID, of type Int32
Column name[1] is CategoryName, of type System.String
CategoryName[1] is Bugbash stuff
CategoryName[2] is Appweek Bugs
CategoryName[3] is .NET Reports
CategoryName[4] is Internal support
好了,就說到這吧,SUNWEN真是想睡了,什麼音樂都不管用了,呵呵.這個例子還真要花大力氣才能完全理解.O.K.886!

以上就是SUNWEN教程之----C#進階(八)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.