C# 调用SqlAdapter.Update并同时调用SqlDataReader.Read时是否有问题

C# 调用SqlAdapter.Update并同时调用SqlDataReader.Read时是否有问题,c#,sql-server,sqldatareader,sqldataadapter,C#,Sql Server,Sqldatareader,Sqldataadapter,我有两个应用程序,一个使用SqlDataAdapter.Update方法更新具有恒定行数(128行)的单个表,另一个应用程序使用SqlDataReader定期从该表中进行选择 有时DataReader只返回127行而不是128行,更新应用程序不删除甚至不插入任何新行,它只是更新 我在问这种行为的原因是什么?是的,datareader需要一个打开的连接,并且在打开查询时不会提取所有行,因此您可以从服务器实时提取数据。这与DataTable不同,DataTable查询并将所有信息放在缓存对象(断开连

我有两个应用程序,一个使用SqlDataAdapter.Update方法更新具有恒定行数(128行)的单个表,另一个应用程序使用SqlDataReader定期从该表中进行选择

有时DataReader只返回127行而不是128行,更新应用程序不删除甚至不插入任何新行,它只是更新


我在问这种行为的原因是什么?

是的,datareader需要一个打开的连接,并且在打开查询时不会提取所有行,因此您可以从服务器实时提取数据。这与DataTable不同,DataTable查询并将所有信息放在缓存对象(断开连接的记录集)中。

因此,我可以使用SqlDataAdapter解决问题。填写读取应用程序而不是使用SqlDataReader类??您的另一种可能是锁定表,使用datareader查看所有记录,并将它们放入内存对象中,完成后关闭连接。如何使用SqlDataReader锁定所有记录,我正在执行简单的select sql语句select*from xIt我已经有一段时间没有这样做了,但您可以在sql代码中完成,使用(ROWLOCK)。但必须小心,因为这会阻止连接更新数据,直到连接释放锁为止。如果有多个对象连接到同一个表,则它们可能必须等待读卡器完成。“但您必须小心,因为这将阻止连接更新数据,直到连接释放锁。”因此,当读卡器关闭时,连接释放锁??