0

我在直接模式下的参数化查询遇到了一些奇怪的问题。

基本上,如果我在已经包含唯一行的表上执行插入,我会得到预期的插入异常。在插入异常之后,我使用相同的连接来获取已锁定数据的信息以报告用户(我知道此时连接仍然良好)。然后关闭此连接并返回到池中,所有这些都按预期进行。

在稍后从池中获取此连接时,我尝试执行简单的更新参数化查询,但出现以下异常:ORA-01008:并非所有变量都绑定。如果没有绑定所有变量,这将是有意义的,但是查看 OracleParameter 集合我可以清楚地看到所有参数都存在并且它们的值是正确的。更不用说在从池中为池中的其他连接获取此连接之前,此查询会运行多次,因为它是针对每个客户端请求更新的通用更新表。此外,所有这些代码都可以在使用 oracle 客户端关闭直接模式的情况下正常工作(与直接模式下的代码和查询执行完全相同)。

基本上,由于某种原因,在直接模式下,当执行插入并失败并且连接被关闭并放回池中时,连接变得损坏并在再次与参数化查询一起使用时失败。

我会制作一个简单的样本,唯一的问题是这个问题在简单的情况下不能可靠地重现。

信息:

  • 这是一个客户端服务器应用程序。即使是单个客户端也会出现问题。
  • 为每个客户端请求创建并从池中获取连接,并在执行请求后关闭。
  • 每个连接都在单个线程中使用(而不是跨多个线程)
  • 使用最新的 Devart.Data.Oracle 5.35.54 和 Devart.Data 5.0.16,我也尝试过使用以前的版本,结果相同。

如果有人遇到此问题或有任何想法,我们将不胜感激

谢谢

4

1 回答 1

0

我们已经在我们的论坛上回复您。

于 2009-12-09T15:03:46.020 回答