1. 程式人生 > >ADO.NET教程(1)初識ado.net

ADO.NET教程(1)初識ado.net

provider 設置 one 取出 密碼 sel 單獨 fetching 錯誤

ADO.NET簡介

ADO.NET使用到的類

需掌握的方法和屬性

ado.net連接實例


ADO.NET的名稱起源於ADO(ActiveX Data Objects),是一個COM組件庫,用於在以往的Microsoft技術中訪問數據。之所以使用ADO.NET名稱,是因為Microsoft希望表明,這是在NET編程環境中優先使用的數據訪問接口。

ado.net可讓開發人員以一致的方式存取資料來源(例如 SQL Server 與 XML),以及透過 OLE DB 和 ODBC 所公開的資料來源。資料共用的消費者應用程序可使用ado.net 來連接至這些資料來源,並且擷取、處理及更新其中所含的資料。
ado.net可將資料管理的資料存取分成不連續的元件,這些元件可分開使用,也可串聯使用ado.net也包含 .NET Framework資料提供者,以用於連接資料庫、執行命令和擷取結果。這些結果會直接處理、放入ado.net DataSet 物件中以便利用機器操作 (Ad Hoc)的方式公開給使用者、與多個來源的資料結合,或在各層之間進行傳遞。DataSet 物件也可以與.NET Framework 資料提供者分開使用,以便管理應用程序本機的資料或來自 XML 的資料。 ado.net類別 (Class) 位於 System.Data.dll 中,而且會與 System.Xml.dll 中的XML 類別整合。
ado.net可為撰寫 Managed 程式碼的開發人員提供類似於ActiveX Data Objects (ADO)提供給原生元件物件模型 (Component Object Model,COM)開發人員的功能。建議使用ado.net而非ADO來存取.NET 應用程序中的資料。 ADO .NET會提供最直接的方法,讓開發人員在 .NET Framework 中進行資料存取。


  1. 類庫:

    Connection 類

    和數據庫交互,必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和連接數據庫所需要的其它參數。Connection對象會被Command對象使用,這樣就能夠知道是在哪個數據源上面執行命令。 與數據庫交互的過程意味著必須指明想要執行的操作。這是依靠Command對象執行的。開發人員使用Command對象來發送SQL語句給數據庫。Command對象使用Connection對象來指出與哪個數據源進行連接。開發人員能夠單獨使用Command對象來直接執行命令,或者將一個Command對象的引用傳遞給DataAdapter,它保存了一組能夠操作下面描述的一組數據的命令。[3]

    Command對象

    成功與數據建立連接後,就可以用Command對象來執行查詢、修改、插入、刪除等命令;Command對象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入數據可用ExecuteNonQuery()方法來執行插入命令。[3]

    DataReader類

    許多數據操作要求開發人員只是讀取一串數據。DataReader對象允許開發人員獲得從Command對象的SELECT語句得到的結果。考慮性能的因素,從DataReader返回的數據都是快速的且只是“向前”的數據流。這意味著開發人員只能按照一定的順序從數據流中取出數據。這對於速度來說是有好處的,但是如果開發人員需要操作數據,更好的辦法是使用DataSet。[3]

    DataSet對象

    DataSet對象是數據在內存中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數據庫中的表。開發人員甚至能夠定義表之間的關系來創建主從關系(parent-child relationships)。DataSet是在特定的場景下使用――幫助管理內存中的數據並支持對數據的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它並不像Data Provider一樣需要特別的前綴。[3]

    DataAdapter類

    某些時候開發人員使用的數據主要是只讀的,並且開發人員很少需要將其改變至底層的數據源。同樣一些情況要求在內存中緩存數據,以此來減少並不改變的數據被數據庫調用的次數。DataAdapter通過斷開模型來幫助開發人員方便的完成對以上情況的處理。當在一單批次的對數據庫的讀寫操作的持續的改變返回至數據庫的時候,DataAdapter 填充(fill)DataSet對象。DataAadapter包含對連接對象以及當對數據庫進行讀取或者寫入的時候自動的打開或者關閉連接的引用。另外,DataAdapter包含對數據的SELECT、INSERT、UPDATE和DELETE操作的Command對象引用。開發人員將為DataSet中的每一個Table都定義DataAadapter,它將為開發人員照顧所有與數據庫的連接。所以開發人員將做的工作是告訴DataAdapter什麽時候裝載或者寫入到數據庫。[3]

    DataTable類

    DataTable 是一個數據網格控件。它可以被應用在 VB 和 ASP 上。它無須代碼就可以簡單的綁定數據庫。它具有微軟風格的用戶界面。 DataTable的實例化以及添加列: DataTable dt = new DataTable(); dt.Columns.Add("ID"); dt.Columns.Add("Name"); DataRow dr = dt.NewRow(); object[] objs = { 1, "Name" }; dr.ItemArray = objs; dt.Rows.Add(dr); this.dataGridView1.DataSource = dt;[3]


1:必須掌握的幾個方法

open():使用 System.Data.SqlClient.SqlConnection.ConnectionString 所指定的屬性設置打開數據庫連接

dispose():釋放由 System.ComponentModel.Component 使用的所有資源。

close():關閉與數據庫的連接。 此方法是關閉任何已打開連接的首選方法

2:必須要掌握的屬性

Database:當前數據庫的名稱或連接打開後要使用的數據庫的名稱

DataSource: 獲取要連接的 SQL Server 實例的名稱

ConnectionString:獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。

ConnectionString:獲取或設置用於打開 SQL Server 數據庫的字符串

ConnectionState 描述與數據源的連接的當前狀態。

ConnectionState 的屬性

/
// 摘要:
// 連接處於關閉狀態。
Closed = 0,
//
// 摘要:
// 連接處於打開狀態。
Open = 1,
//
// 摘要:
// 連接對象正在與數據源連接。
Connecting = 2,
//
// 摘要:
// 連接對象正在執行命令。(該值是為此產品的未來版本保留的。)
Executing = 4,
//
// 摘要:
// 連接對象正在檢索數據。(該值是為此產品的未來版本保留的。)
Fetching = 8,
//
// 摘要:
// 與數據源的連接中斷。 只有在連接打開之後才可能發生這種情況。 可以關閉處於這種狀態的連接,然後重新打開。(該值是為此產品的未來版本保留的。)
Broken = 16


ado連接實例

  string strSql = "Data Source=.;database=Ttest;User id=sa;pwd=123456";
            SqlConnection connection = new SqlConnection(strSql);
            connection.Open();
            //判斷數據庫是否打開
            if (connection.State == ConnectionState.Open)
            {
                Console.WriteLine("數據連接信息");
                Console.WriteLine("數據庫源:{0}",connection.DataSource);
                Console.WriteLine("數據庫名稱:{0}",connection.Database);
                Console.WriteLine("連接數據花費時間:{0}",connection.ConnectionTimeout);
            }
            //關閉連接
            connection.Close();
            //釋放所有資源
            connection.Dispose();

            if (connection.State == ConnectionState.Closed)
            {
                Console.WriteLine("數據庫已關閉");
            }

技術分享圖片

ADO.NET教程(1)初識ado.net