C# 自动提交和多个SqlConnections

C# 自动提交和多个SqlConnections,c#,sql-server,visual-studio-2005,C#,Sql Server,Visual Studio 2005,具有自动提交的插入是否保证对数据库上的任何/每个SqlConnection立即可见,或者仅在其自身的SqlConnection上可见 我有一个带有3个SqlConnections的过程。连接1与驱动循环的SqlDataReader关联。在循环中,连接2用于获取测试数据,连接3用于在表中插入行。插入自动提交 我们遇到的情况是测试(使用连接两个数据)失败。一种可能的解释是,连接2有时看不到连接3在上一次通过循环时插入的行。这可能吗 我认为将二和三结合起来没有问题,我将这样做,但我没有任何办法强迫这个

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

我有一个带有3个SqlConnections的过程。连接1与驱动循环的SqlDataReader关联。在循环中,连接2用于获取测试数据,连接3用于在表中插入行。插入自动提交

我们遇到的情况是测试(使用连接两个数据)失败。一种可能的解释是,连接2有时看不到连接3在上一次通过循环时插入的行。这可能吗


我认为将二和三结合起来没有问题,我将这样做,但我没有任何办法强迫这个错误发生,我想知道这个解释是否可行。

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

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


我不确定您的“连接2”在做什么,但是如果它取决于
SqlDataReader
可以看到C3中的
INSERT
的结果,那么它肯定会因此而失败。

这就是您正在做的吗

  • 您可以使用打开一个SQLDataReader来获取数据,然后在其中循环
  • 在这个循环过程中,您插入一条记录,然后通过读取器中使用的select语句插入所需的记录
  • 您在循环中看不到它,因为数据已经被选中

  • 您有显示问题的代码示例吗?我可能应该添加连接2和3在使用时是打开和关闭的,因此当可疑数据被2检索时,连接3将关闭。re:示例代码。原文太长了,无法在这里发布,我认为没有必要回答第一段中的问题。让我这样说:我有一些交易要处理。每个帐户都有多个交易记录。有一个年度限额,因此一旦达到限额,交易就不会被处理。我使用ConnectionOne和SqlDataReader循环处理事务。在循环中,我在连接2上使用select语句来查找当前总数。如果总数仍然小于限制,我将使用连接3插入一行。如果是同一个帐户,则Select返回的总数应该(通常确实)包括上一次循环中插入的行。@SeaDrive-在这种情况下,您确定插入总是按预期触发吗?最终这些行总是在那里。以Aaronaught的第一句话为准,我不得不去别处寻找错误。我有另一个假设,与函数有关,该函数返回运行总数。