我是ADO.net的新手 我需要從DB中檢索一組行,然後迭代one-be-one並有條件地發送它們對於某些可能從UPDATE
或DELETE
收到DB的對象。 從SqlDataReader
文件我沒有正確理解它是如何工作(它從數據庫讀取所有的行或只有一些或者一個接一個?) 從MSDN:選擇一組行並更新或刪除一些:SqlDataReader或SqlDataAdapter + DataSet
結果返回查詢執行並存儲在客戶端的網絡緩衝區中的 ,直到您使用DataReader的Read 方法請求它們。
- 當確切的結果返回?
command.ExecuteReader()
期間或reader.Read()
期間?結果的內容是什麼 - 所有數據或部分數據? - 什麼是本地機器上的「網絡緩衝區」?
- 從哪裏讀取數據
Read
?從數據庫或從緩存?
會影響數據修改(UPDATE
或DELETE
)從數據庫中檢索下一個數據嗎? 代碼存根:
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(queryString, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader());
{
while (reader.Read())
{
//ReadSingleRow...
//Perform some checks and if TRUE send to a manager obeject whcih perform UPDATE or DELETE on this record
}
}
}
或者最好使用SqlDataAdapter
與DataSet
或DataTable
這裏?
當您執行代碼時,您是否嘗試過使用SSMS的活動監視器,您將看到將什麼SQL發送到服務器。 – Irfarino
仍然沒有,但我會做到這一點。但我的問題是更多的理論 - 我想了解它具體如何工作,因爲解決方法始終會被發現 – ALZ
請忽略早先的評論,它超時了我。您是否嘗試過調試代碼並在SSMS中使用Activity監視器來查看正在執行的SQL以及何時嘗試單步執行代碼,您將看到發生了什麼。要回答你的第一點,command.executereader()方法將把命令提交給服務器。結果存儲在客戶端PC上看看這個鏈接[ADO.NET](http://msdn.microsoft.com/en-ca/library/haa3afyz(v = vs.71).aspx)。看看這本書,從Aress的C#5.0數據庫開始,ADO.NET編程的優秀資源。 – Irfarino