繁体   English   中英

ODBC代码仅在启用“连接池”时有效

[英]ODBC code only works when Connection Pooling is on

我正在使用以下代码模式使用ODBC在第三方数据库上运行一些查询。

如果我使用ODBC数据源管理器手动启用连接池,一切正常。

问题是如果禁用连接池,则在第二次数据库调用时出现ODBC连接错误。

基本上,我想避免在客户计算机上启用连接池的部署麻烦(除非有一些简单的方法)。

以下ODBC代码有问题吗?

using (var conn = GetODBCConnection())
{
     using (var sdr = new OdbcCommand("SELECT * FROM [TABLE]", conn).ExecuteReader())
     {
         while (sdr.Read())
         {
             // use data
         }
     }
}

private OdbcConnection GetGenieConnection()
{
    var conn = new OdbcConnection(_connString);

    conn.Open();

    return conn;
}

PS:我正在使用4D v12 ODBC驱动程序。 我调查了连接字符串选项以打开连接池但无法找到任何内容。

编辑:这种行为可能与线程有关吗? 我在BackgroundWorker线程中调用第一个ODBC数据库调用。 如果我在一个线程中调用所有内容,它似乎有效。 这可以解释一下吗?

如果任何其他可怜的灵魂在这里结束,我的解决方案是:

  1. 在进程的生命周期内保持静态连接“打开”。
  2. 使用此单例实例进行所有数据库调用。
  3. 使用锁来确保一次只运行一个ODBC调用。

就性能而言,这不是一个理想的解决方案,但它确实有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM