次のコードパターンを使用して、ODBCを使用してサードパーティのデータベースでいくつかのクエリを実行しています。
ODBCデータソースアドミニストレータを使用して接続プールを手動で有効にすると、すべてが正常に機能します。
問題は、接続プールが無効になっている場合、2回目のデータベース呼び出しで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:4Dv12ODBCドライバーを使用しています。接続プールをオンにする接続文字列オプションを調べましたが、何も見つかりませんでした。
編集:この動作はスレッドと関係がありますか?私はBackgroundWorkerスレッドで最初のODBCデータベース呼び出しを呼び出しています。すべてを1つのスレッドで呼び出すと機能するようです。これは説明できますか?