我是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