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