數據訪問是任何應用程序的基礎。在本文中,我將說明如何用C#和ADO.NET訪問基於SQL Server的數據,以及如何在一個數據綁定的網格控件中顯示數據。我用一個簡單的C#應用程序為例。
ADO.NET結構
使用ADO.NET不需要維持一個連接。另外,在ADO.NET中,只需用幾行代碼,你就可以從一個數據源轉到另一個數據源。
ADO.NET的核心對象有Command, Connection, DataReader和DataAdapter。它們是.NET中所有數據操作的基礎。
核心ADO.NET命名空間
System.Data:是其它命名空間的基礎,並補充DataTable, DataColumn, DataView和Constraints對象。
System.Data.Common:定義由各種數據提供者共享的普通對象,包括DataAdapter, DataColumnMapping和DataTableMapping。它為數據提供者所用,包含用於訪問數據源的集合。
System.Data.OleDb:定義你用來連接到數據源並修改各種數據源中的數據的對象。它作為普通數據提供者而編寫,由包含SQL Server、微軟Oracle OLE DB Provider和微軟Jet 4.0 Provider驅動器的.NET Framework提供執行。當你需要連接到許多不同的數據源時,就會用到這個命名空間,並且你希望達到比提供者更佳的性能。
System.Data.SqlClient:直接利用SQL Server應用程序接口,提供比更為普通的System.Data.OleDb更佳的性能。這是一個專門為SQL Server 7.0及以上版本建立的提供者命名空間。
System.Data.SqlTypes:專門為SQL Server的數據類型提供類。這個命名空間專為SQL Server而設計,並提供比其它命名空間更佳的性能,但只應用於SQL Server後端。
System.Data.Odbc:處理所有兼容ODBC驅動器。只有.NET Framework 1.1支持這個命名空間,所以安裝新版Framework就能獲得它。
數據網格實例
給表格dataGrid1增加一個數據網格,如圖1所示。為了讓列表A中的樣本代碼能夠運行,需要利用下面的命名空間:
using System.Data;
using System.Data.OleDb;
列表A
using System.Data;
using System.Data.OleDb;
private void Form1_Load(object sender, System.EventArgs e)
{
string strConn, strSQL;
strConn = "Provider=Microsoft.JET.OLEDB.4.0;"+"data source=" + "C:\\DataAccess\\Northwind.mdb";strSQL = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, " ;
strSQL = strSQL + "Address, City, Country FROM Customers";
OleDbDataAdapter da = newOleDbDataAdapter(strSQL, strConn);
DataSet ds = newDataSet();
da.Fill(ds, "Customers");
dataGrid1.DataMember = "Customers";
dataGrid1.DataSource=ds;
}
上面的代碼定義了兩個變量:strConn和strSQL。StrConn使用OLEDB設定利用JET數據庫所需的連接字符串,並指向當地計算機的Northwind.mdb數據庫位置。StrSQL指定我想在Access數據庫(Northwind.mdb)上運行的查詢。
接下來,我定義OleDBDataAdapter對象da並將它提交給查詢語句(strSQL)和連接字符串(strConn)。注意,我在例子中沒有建立一個連接(Connection)對象。
然後,我定義數據組ds,它被用來從網格控件中的用戶表(Customers)中獲得實際數據。我使數據網格控件dataGrid1的DataMember特性指向到我獲得數據的表格,並將控件DataSource的特性設定給DataSetds。(DataMember特性獲得/設定DataSource中的一個綁定控件的表格,DataSource特性獲得/設定用來安裝控件的數據源。)當你運行列表A中的代碼時,結果如圖2所示。
我顯示C:\\DataAccess\\Northwind.mdb數據庫中的數據,只看到我在選擇語句中選中的欄。如果選擇的列數或欄數超過頁面的大小,網格控件會自動顯示滾動條。
現在你了解了在C#應用程序中使用ADO.NET,以及建立一個數據網格控件顯示查詢返回數據的基本原理了。