使用参数化查询解决Oracle提供程序直接模式问题

时间:2009-12-08 17:43:26

标签: devart sql-parametrized-query

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

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

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

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

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

的信息:

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

如果有人遇到此问题或有任何想法,我们将非常感谢您的帮助

感谢

1 个答案:

答案 0 :(得分:0)

我们在论坛上回复了您here