带有read_committed隔离的Oracle ODP.net事务的VB.Net首次调用后返回原始值

时间:2018-08-09 17:17:17

标签: vb.net oracle transactions odp.net isolation-level

我已经使用VB.net和Oracle ODP.net设置了隔离级别为READ_COMMITTED的事务

  

将OraTransaction设为OracleTransaction =   oraConnection.BeginTransaction(IsolationLevel.ReadCommitted)

在Function块中声明它,然后紧接着,一个FOR循环与传递Connection对象引用的内部几个Sub调用一起运行。在执行过程中,将发出Select,并且该表中的两个字段会更改。

使用DataAdapter对象的第一个迭代,即Select命令,将按预期返回存储的值。在执行期间,字段的值会更改,然后我使用Command对象执行更新,但尚未提交。

当第二次迭代发布上述Select时,查询仍会返回原始值,而不是更新的值。

感谢您的帮助。

J。

1 个答案:

答案 0 :(得分:0)

寻找另一种保留更改的方法,我发现我用来从表中提取数据的Select查询中存在错误。

如果我对表执行更新命令,然后执行选择命令,则实际上返回更新后的值。当在事务完成之前手动引发异常时,所有的更改都将回滚,而在事务完成时,它将成功提交更改,这正是我想要实现的。