自动提交和多个SqlConnections

时间:2010-04-13 14:36:36

标签: c# sql-server visual-studio-2005

具有自动提交的插入是否保证对数据库上的任何/每个SqlConnection立即可见,或者仅在它自己的SqlConnection上可见?

我有一个包含3个SqlConnections的过程。 Connection One与驱动循环的SqlDataReader相关联。使用循环,Connection Two用于获取测试数据,Connection Three用于在表中插入行。插入自动提交。

我们遇到测试(使用Connection Two数据)失败的情况。一种可能的解释是,Connection Two有时在前一次循环中看不到连接三插入的行。这可能吗?

我没有看到组合Two和Three的问题,我将会这样做,但我没有任何办法强制发生此错误,我想知道这个解释是否甚至可能。

2 个答案:

答案 0 :(得分:2)

是的,自动提交的插入与任何其他已提交的插入相同,并且在其他连接上可见。

但是,插入行不会更改已存在的SqlDataReader返回的行,因为SqlDataReader对象封装了一个记录集 - 查询的结果 - 而不是查询本身。

我不确定你的“连接二”是做什么的,但是如果它取决于INSERT中C3 SqlDataReader的结果,那么它肯定会失败原因。

答案 1 :(得分:0)

这是你在做什么?

  1. 您使用打开一个SQLDataReader来获取数据,然后循环遍历它。
  2. 在此循环期间,您可以通过阅读器中使用的select语句插入您期望的记录。
  3. 您没有在循环中看到它,因为数据已被选中。