ADO.NET DataReader對象方法
ADO.NET有很多值得學習的地方,這里我們主要介紹DataReader對象提供方法,可以讀取通過在數據源執行命令獲得的結果集,并且是只讀的、只向前遞進的行數據流,包括介紹DataReader對象遍歷數據等方面。這個對象在讀取數據方面的性能最好。
#T#Command對象可以對數據源的數據直接操作,但是如果執行的是要求返回數據結果集的查詢命令或存儲過程,需要先獲取數據結果集的內容,然后再進行處理或輸出,這就需要DataReader對象來配合。DataReader對象提供一個只讀的、單向的游標,用于訪問結果集的行數據。因為內存中每次僅有一個數據行,所以DataReader對象需要的開銷很小,效率很高。這里還得提一下Command對象對數據源的數據直接操作而不要求返回數據結果集的情況,這時就不需要使用ADO.NET DataReader對象,而是使用ExecuteNonQuery()方法完成對數據源數據的直接操作。

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