新聞中心
ADO.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹DataReader對(duì)象提供方法,可以讀取通過在數(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é)果集的查詢命令或存儲(chǔ)過程,需要先獲取數(shù)據(jù)結(jié)果集的內(nèi)容,然后再進(jìn)行處理或輸出,這就需要DataReader對(duì)象來配合。DataReader對(duì)象提供一個(gè)只讀的、單向的游標(biāo),用于訪問結(jié)果集的行數(shù)據(jù)。因?yàn)閮?nèi)存中每次僅有一個(gè)數(shù)據(jù)行,所以DataReader對(duì)象需要的開銷很小,效率很高。這里還得提一下Command對(duì)象對(duì)數(shù)據(jù)源的數(shù)據(jù)直接操作而不要求返回?cái)?shù)據(jù)結(jié)果集的情況,這時(shí)就不需要使用ADO.NET DataReader對(duì)象,而是使用ExecuteNonQuery()方法完成對(duì)數(shù)據(jù)源數(shù)據(jù)的直接操作。
客戶端應(yīng)用程序要向數(shù)據(jù)庫中插入學(xué)生數(shù)據(jù)信息。將數(shù)據(jù)值寫在SQL命令中或者傳遞給存儲(chǔ)過程的參數(shù),然后調(diào)用Command對(duì)象的ExecuteNonQuery()方法,學(xué)生數(shù)據(jù)就插入到數(shù)據(jù)庫了ExecuteNonQuery()方法可以返回受影響的行數(shù),如果插入一個(gè)學(xué)生記錄成功了,返回的行數(shù)就應(yīng)該是1,不成功就返回-1。通過返回的受影響行數(shù),可以判斷是否成功。這個(gè)應(yīng)用程序就沒有使用DataReader對(duì)象。
ADO.NET DataReader對(duì)象不能直接使用構(gòu)造函數(shù)實(shí)例化。必須通過Command對(duì)象的ExecuteReader()方法來生成。DataReader對(duì)象最主要的方法是Read()方法,用來檢索行,然后用下標(biāo)來訪問行中的字段。在DataReader對(duì)象遍歷數(shù)據(jù)記錄時(shí),數(shù)據(jù)連接必須保持打開狀態(tài),知道DataReader對(duì)象被關(guān)閉。
客戶端應(yīng)用程序需要數(shù)據(jù)源提供數(shù)據(jù)時(shí),發(fā)送查詢命令到數(shù)據(jù)源。由數(shù)據(jù)源進(jìn)行查詢處理,返回給客戶端一個(gè)只讀、只進(jìn)的記錄集。對(duì)這個(gè)記錄集的操作就是利用DataReader對(duì)象只讀和只進(jìn)訪問方式進(jìn)行的。每讀一個(gè)數(shù)據(jù)就向下一條記錄轉(zhuǎn)移,直至記錄集末尾,并且得到的數(shù)據(jù)是只讀的,不能修改。整個(gè)獲取數(shù)據(jù)過程需要客戶端應(yīng)用程序與數(shù)據(jù)源之間保持永久連接。.NET提供程序及其ADO.NET DataReader類,請(qǐng)參見表:
| 提供程序 | DataReader類 |
| SQL數(shù)據(jù)提供程序 | SqlDataReader |
| OLE DB數(shù)據(jù)提供程序 | OleDbDataReader |
| Oracle數(shù)據(jù)提供程序 | OracleDataReader |
| ODBC數(shù)據(jù)提供程序 | OdbcDataReader |
本文標(biāo)題:ADO.NET DataReader對(duì)象方法
文章出自:http://m.5511xx.com/article/cochdij.html


咨詢
建站咨詢
