Command對象ExecuteReader()方法
時間:2020-07-11 作者:管理員(yuán) 點擊:681
建立與數據源的連接後,可以使用 DbCommand 對象來執行命令并從數據源中(zhōng)返回結果。今天介紹下(xià)ExecuteReader()方法
ExecuteReader();返回一(yī)個SqlDataReader對象或OleDbDataReader對象,這個看你的程序的需要去(qù)做。可以通過這個對象來檢查查詢結果,它提供了“遊水”式的執行方式,即從結果中(zhōng)讀取一(yī)行之後,移動到另一(yī)行,則前一(yī)行就無法再用。有一(yī)點要注意的是執行之後,要等到手動去(qù)調用Read()方法之後,DataReader對象才會移動到結果集的第一(yī)行,同時此方法也返回一(yī)個Bool值,表明下(xià)一(yī)行是否可用,返回True則可用,返回False則到達結果集末尾。
使用DataReader可以提高執行效率,有兩種方式可以提高代碼的性能:一(yī)種是基于序号的查找,一(yī)個是使用适當的Get方法來查找。因爲查詢出來的結果一(yī)般都不會改變,除非再次改動查詢語句,因此可以通過定位列的位置來查找記錄。用這種方法有一(yī)個問題,就是可能知(zhī)道一(yī)列的名稱而不知(zhī)道其所在的位置,這個問題的解決方案是通過調用DataReader 對象的GetOrdinal()方法,此方法接收一(yī)個列名并返回此列名所在的列号。例:
int id=reader.GetOrdinal("CategoryName");
while(reader.Read())
{
Response.Write(reader[id]);
}
reader.Close();
至于第二種方式很直觀,例:
while(reader.Read())
{
Response.Write(reader.GetInt32(0).ToString()+" "+reader.GetString(1).ToString()+"
<br>");
}
DataReader的GetInt32()和GetString()通過接收一(yī)個列号來返回一(yī)個列的值,這兩種是最常用的,其中(zhōng)還有很多其它的類型。
(注:DataReader對象在調用Close()方法即關閉與數據庫的連接,如果在沒有關閉之前又(yòu)重新打開(kāi)第二個連接,則會産生(shēng)一(yī)條異常信息)