私のコンピューターには、Access 2016を搭載した64ビットOfficeと32bit Access 2010 Redistributableがインストールされています。プロバイダーMicrosoft.ACE.OLEDB.12.0は64ビットモードで実行中に登録されていませんが、アクセスは64bitです
私のVB.NETプログラムは、OleDbクラスを使用して、.accdbファイルに格納されたデータを読み書きします。
AnyCPUオプションを使用してコンパイルすると、「prefer 32 bit」オプションを設定しない限り、「Microsoft.ACE.OLEDB.12.0 provider not registered」という例外が停止して表示されます。
しかし、その後、私の全体のアプリケーションは64ビット処理の恩恵を受けないであろう、それは32ビットとして実行されます(IntPtr.Size = 4
)
は、それはなぜですか? .NET OleDbクラスは、Access 2016 64bitに付属の64bitプロバイダを見つけるべきではありませんか?
私はここで何が起こっているのか理解するのを手伝ってくれてありがとうと思います。
ありがとう、@ヘインツ、あなたはそれを釘付けた。私のOfficeバージョンはClick-To-Runのもので、私はこの問題を認識していませんでした。今のところ、私はあなたの最初の提案を試みます。しかし、私は将来SQLiteの切り替えを検討します。どうもありがとうございました! – VBobCat
@VBobCat:アクセスランタイムが必要ない場合は、[ドライバのみをダウンロードする](https://www.microsoft.com/en-us/download/details.aspx?id=13255)もできます。 – Heinzi
フィードバック:32ビットアクセスランタイムを削除し、64ビットバージョンのAccess 2013 Runtimeをインストールすると、正常に動作しました。再びありがとう、@ Heinzi! – VBobCat