1

Vista ガジェットを開発しています。ガジェットはローカルの .mdb データベースで動作しており、OLEDB が使用されています。コードは次のとおりです。

var cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + getDbFilePath() + ";Persist Security Info=False;";
var connection = new ActiveXObject("ADODB.Connection");
connection.ConnectionString = cs;

Vista 32 では動作しますが、x64 では失敗し、次のメッセージが表示されます。

プロバイダーが見つかりません。正しくインストールされていない可能性があります。

コマンド ラインから JavaScript ファイルを実行している場合、エラーは発生しません。 getDbFilePath()は正しいパス、データベースが存在するなどを返します。

修正方法は?たぶん、他のデータベースプロバイダーを使用する意味はありますか?

ありがとうございました

4

1 に答える 1

0

x64 に登録されている/利用可能なネイティブ Jet イメージはありません。x64 の 32 ビット プロセスでのみ利用できます。サイドバーの実行可能ファイルはネイティブ x64 イメージとして実行されているため、失敗します。

あなたの選択肢は限られているようです:

  1. Jet をあきらめる。たとえば、SQL Compact Edition、SQL Express などのいずれかに切り替える
  2. Jet 呼び出しをサロゲート 32 ビット COM オブジェクトにラップします。オブジェクトをアウトプロセスとして 64 ビット レジストリに登録します。例えば

    http://dnjonline.com/article.aspx?ID=jun07_access3264

  3. x64 サポートなし

サイドバーを強制的に 32 ビット モードで実行しようとするのは、むずかしいことは言うまでもなく、不可能に思えます。

于 2009-05-04T13:45:18.667 に答える