數(shù)據(jù)訪問是任何應用程序的基礎。在本文中,我將說明如何用C#和ADO.NET訪問基于SQL Server的數(shù)據(jù),以及如何在一個數(shù)據(jù)綁定的網(wǎng)格控件中顯示數(shù)據(jù)。我用一個簡單的C#應用程序為例。
ADO.NET結構
使用ADO.NET不需要維持一個連接。另外,在ADO.NET中,只需用幾行代碼,你就可以從一個數(shù)據(jù)源轉到另一個數(shù)據(jù)源。
ADO.NET的核心對象有Command, Connection, DataReader和DataAdapter。它們是.NET中所有數(shù)據(jù)操作的基礎。
核心ADO.NET命名空間
System.Data:是其它命名空間的基礎,并補充DataTable, DataColumn, DataView和Constraints對象。
System.Data.Common:定義由各種數(shù)據(jù)提供者共享的普通對象,包括DataAdapter, taColumnMapping和DataTableMapping。它為數(shù)據(jù)提供者所用,包含用于訪問數(shù)據(jù)源的集合。
System.Data.OleDb:定義你用來連接到數(shù)據(jù)源并修改各種數(shù)據(jù)源中的數(shù)據(jù)的對象。它作為普通數(shù)據(jù)提供者而編寫,由包含SQL Server、微軟Oracle OLE DB Provider和微軟Jet 4.0 Provider驅動器的.NET Framework提供執(zhí)行。當你需要連接到許多不同的數(shù)據(jù)源時,就會用到這個命名空間,并且你希望達到比提供者更佳的性能。
System.Data.SqlClient:直接利用SQL Server應用程序接口,提供比更為普通的System.Data.OleDb更佳的性能。這是一個專門為SQL Server 7.0及以上版本建立的提供者命名空間。
System.Data.SqlTypes:專門為SQL Server的數(shù)據(jù)類型提供類。這個命名空間專為SQL Server而設計,并提供比其它命名空間更佳的性能,但只應用于SQL Server后端。
System.Data.Odbc:處理所有兼容ODBC驅動器。只有.NET Framework 1.1支持這個命名空間,所以安裝新版Framework就能獲得它。
數(shù)據(jù)網(wǎng)格實例
給表格dataGrid1增加一個數(shù)據(jù)網(wǎng)格,如圖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:DataAccessNorthwind.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數(shù)據(jù)庫所需的連接字符串,并指向當?shù)赜嬎銠C的Northwind.mdb數(shù)據(jù)庫位置。StrSQL指定我想在Access數(shù)據(jù)庫(Northwind.mdb)上運行的查詢。
接下來,我定義OleDBDataAdapter對象da并將它提交給查詢語句(strSQL)和連接字符串(strConn)。注意,我在例子中沒有建立一個連接(Connection)對象。
然后,我定義數(shù)據(jù)組ds,它被用來從網(wǎng)格控件中的用戶表(Customers)中獲得實際數(shù)據(jù)。我使數(shù)據(jù)網(wǎng)格控件dataGrid1的DataMember特性指向到我獲得數(shù)據(jù)的表格,并將控件DataSource的特性設定給DataSetds。(DataMember特性獲得/設定DataSource中的一個綁定控件的表格,DataSource特性獲得/設定用來安裝控件的數(shù)據(jù)源。)當你運行列表A中的代碼時,結果如圖2所示。
顯示C:DataAccessNorthwind.mdb數(shù)據(jù)庫中的數(shù)據(jù),只看到我在選擇語句中選中的欄。如果選擇的列數(shù)或欄數(shù)超過頁面的大小,網(wǎng)格控件會自動顯示滾動條。
現(xiàn)在你了解了在C#應用程序中使用ADO.NET,以及建立一個數(shù)據(jù)網(wǎng)格控件顯示查詢返回數(shù)據(jù)的基本原理了。
新聞熱點
疑難解答