ADO.NET DataReader對(duì)象方法
ADO.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹DataReader對(duì)象提供方法,可以讀取通過(guò)在數(shù)據(jù)源執(zhí)行命令獲得的結(jié)果集,并且是只讀的、只向前遞進(jìn)的行數(shù)據(jù)流,包括介紹DataReader對(duì)象遍歷數(shù)據(jù)等方面。這個(gè)對(duì)象在讀取數(shù)據(jù)方面的性能最好。
#T#Command對(duì)象可以對(duì)數(shù)據(jù)源的數(shù)據(jù)直接操作,但是如果執(zhí)行的是要求返回?cái)?shù)據(jù)結(jié)果集的查詢(xún)命令或存儲(chǔ)過(guò)程,需要先獲取數(shù)據(jù)結(jié)果集的內(nèi)容,然后再進(jìn)行處理或輸出,這就需要DataReader對(duì)象來(lái)配合。DataReader對(duì)象提供一個(gè)只讀的、單向的游標(biāo),用于訪問(wèn)結(jié)果集的行數(shù)據(jù)。因?yàn)閮?nèi)存中每次僅有一個(gè)數(shù)據(jù)行,所以DataReader對(duì)象需要的開(kāi)銷(xiāo)很小,效率很高。這里還得提一下Command對(duì)象對(duì)數(shù)據(jù)源的數(shù)據(jù)直接操作而不要求返回?cái)?shù)據(jù)結(jié)果集的情況,這時(shí)就不需要使用ADO.NET DataReader對(duì)象,而是使用ExecuteNonQuery()方法完成對(duì)數(shù)據(jù)源數(shù)據(jù)的直接操作。

客戶(hù)端應(yīng)用程序要向數(shù)據(jù)庫(kù)中插入學(xué)生數(shù)據(jù)信息。將數(shù)據(jù)值寫(xiě)在SQL命令中或者傳遞給存儲(chǔ)過(guò)程的參數(shù),然后調(diào)用Command對(duì)象的ExecuteNonQuery()方法,學(xué)生數(shù)據(jù)就插入到數(shù)據(jù)庫(kù)了ExecuteNonQuery()方法可以返回受影響的行數(shù),如果插入一個(gè)學(xué)生記錄成功了,返回的行數(shù)就應(yīng)該是1,不成功就返回-1。通過(guò)返回的受影響行數(shù),可以判斷是否成功。這個(gè)應(yīng)用程序就沒(méi)有使用DataReader對(duì)象。
ADO.NET DataReader對(duì)象不能直接使用構(gòu)造函數(shù)實(shí)例化。必須通過(guò)Command對(duì)象的ExecuteReader()方法來(lái)生成。DataReader對(duì)象最主要的方法是Read()方法,用來(lái)檢索行,然后用下標(biāo)來(lái)訪問(wèn)行中的字段。在DataReader對(duì)象遍歷數(shù)據(jù)記錄時(shí),數(shù)據(jù)連接必須保持打開(kāi)狀態(tài),知道DataReader對(duì)象被關(guān)閉。
客戶(hù)端應(yīng)用程序需要數(shù)據(jù)源提供數(shù)據(jù)時(shí),發(fā)送查詢(xún)命令到數(shù)據(jù)源。由數(shù)據(jù)源進(jìn)行查詢(xún)處理,返回給客戶(hù)端一個(gè)只讀、只進(jìn)的記錄集。對(duì)這個(gè)記錄集的操作就是利用DataReader對(duì)象只讀和只進(jìn)訪問(wèn)方式進(jìn)行的。每讀一個(gè)數(shù)據(jù)就向下一條記錄轉(zhuǎn)移,直至記錄集末尾,并且得到的數(shù)據(jù)是只讀的,不能修改。整個(gè)獲取數(shù)據(jù)過(guò)程需要客戶(hù)端應(yīng)用程序與數(shù)據(jù)源之間保持永久連接。.NET提供程序及其ADO.NET DataReader類(lèi),請(qǐng)參見(jiàn)表:
| 
 提供程序  | 
 DataReader類(lèi)  | 
| 
 SQL數(shù)據(jù)提供程序  | 
 SqlDataReader  | 
| 
 OLE DB數(shù)據(jù)提供程序  | 
 OleDbDataReader  | 
| 
 Oracle數(shù)據(jù)提供程序  | 
 OracleDataReader  | 
| 
 ODBC數(shù)據(jù)提供程序  | 
 OdbcDataReader  | 















 
 
 
 
 
 
 