0

私は C# (.NET 4.0) でアプリケーションを作成していますが、これは別のはるかに古いアプリケーションと統合する必要があります。要件の一部として、私のプログラムは 3 つの Btrieve ファイルからデータを読み取る必要があります。これらの Btrieve データ ファイルは、私のプログラムがインストールされているコンピューターに既に存在すると想定できます。また、Pervasive PSQL V9 もインストールされ、リレーショナルおよびトランザクション サービス プログラムが実行されていると想定できます。

関連する DDF ファイルがあり、アプリケーションの一部としてインストールできます。それらが作成された方法では、Btrieve データ ファイルがある場所とは別のディレクトリに配置する必要があります。(データファイルがあるディレクトリのサブディレクトリである必要があります)。

Pervasive や Btrieve については始めたときは何も知りませんでしたが、少し実験した結果、32 ビット ODBC 管理ツールを使用して DSN を作成できるようになりました。 ODBC ADO コネクタ。これまでのところすべて順調です。

私の質問は、マシン上で ODBC DSN を作成せずに、.NET プログラムからこれらのファイルを読み取ることは可能ですか? つまり、*.DAT ファイルが存在するディレクトリと *.DDF ファイルが存在するディレクトリを ODBC 接続文字列で指定することは可能ですか?

私は ODBC を使用することにコミットしていません。OLEDB や、.NET を使用してこれらのファイルから確実に読み取ることができるその他のテクノロジを喜んで使用します。

4

2 に答える 2

1

DSN レス接続では DSN なしで接続できますが、それでもデータベース名が必要です。Pervasive Database Names は、 DTIまたはDTOを使用してオンザフライで作成できます。C# を使用する場合は、DTO をお勧めします。
データベース名を作成できない場合は、OLEDB を使用できます。OLEDB ドキュメントの「リモート接続Data Source」セクションに記載されているように、接続文字列のパラメーターでのパスの使用がサポートされています。

もう 1 つの警告として、.NET プログラムを AnyCPU ではなく x86 としてコンパイルしてください。Pervasive OLEDB プロバイダーは 32 ビットのみです。AnyCPU としてコンパイルされた 64 ビット オペレーティング システムにアプリをインストールすると、アプリは 64 ビット プロバイダーを探して失敗します。

于 2013-01-23T13:41:56.770 に答える
0

DSN レス接続を検索する必要があります。DSN=mydsn を connect メソッド (mydsn は設定した DSN) に渡す代わりに、DRIVER=xxx (xxx はドライバーの名前) と、それをファイルに送るために必要なその他の属性を渡します。さまざまな ODBC ドライバーの接続文字列のリストが掲載されたサイトがたくさんあるため、ODBC ドライバーのドキュメントが見つからない場合は、Pervasive をリストする必要があります。別の方法として、指定する必要がある属性の名前が見つかるレジストリの DSN を調べます。

于 2013-01-23T09:06:45.183 に答える