1

MS-Accessに値を挿入したい次のプログラムがあります。「microsoft.ace.oledb.12.0プロバイダーがローカルマシンに登録されていません」というエラーが表示されます。

一部の開発者の提案に従って、データベースエンジンをすでにインストールしましたが、それでもエラーが発生します。

VS-2008とMS-Access-2007を搭載したVistaマシンでコードを書いています。

エラーを解決するのを手伝ってください

パブリック部分クラスForm1:フォーム

{
    public Form1()
    {
        InitializeComponent();
    }
    OleDbConnection con;
    OleDbCommand cmd;
    private void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
             con = new OleDbConnection("Provider=Microsft.ACE.Oledb.12.0;Data Source=C:\\Users\\Satish\\Documents\\Testing.accdb");
            con.Open();
            string cmdText = "Insert Into UserDetail (UsrName,Age,Address,MobileNo) Values ('" + txtName.Text.ToString().Trim() + "','" + txtAge.Text.ToString().Trim() + "','" + txtAddress.Text.ToString().Trim() + "','" + txtMobile.Text.ToString().Trim() + "')";
             cmd = new OleDbCommand(cmdText, con);
            cmd.ExecuteNonQuery();
            con.Close();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }


    }


}
4

4 に答える 4

1

高度なコンパイル構成をx86に変更してみてください。これは通常、64ビットオペレーティングシステムを使用しているためです。

VS2008で

ビルド->構成マネージャー->アクティブソリューションプラットフォーム:->新規->新しいプラットフォームを入力または選択-> x86-> OK

編集:

次のことを試してください。

に行く

C:\Windows\SysWOW64

開いたodbcad32.exe

リストにExcelが見つからない場合は、[追加]をクリックして追加してください

于 2012-09-12T08:04:09.113 に答える
0

アセンブリを登録できますRegSrv32

を使用するためCOM、COMを再登録する必要があります。

リンク: http: //msdn.microsoft.com/en-us/library/ms859484.aspx

RegSrv32を使用すると、COMをレジスタベース(microsoft.ace.oledb.12.0プロバイダー)に登録できます。

于 2012-09-12T07:31:12.560 に答える
0

以前、Office2007ではなくOffice2003がインストールされているユーザーのマシンにアプリケーションを展開したときにこの問題が発生しました。マシン上のOfficeのバージョンが正しくインストールされていないようです。

考えられる回避策の1つは、プロバイダーをMicrosoft.ace.oledb.4.0などの以前のバージョンに変更し、同じエラーが続くかどうかを確認することです。

于 2012-09-12T13:16:33.100 に答える
0

最初に確認する必要があるのは、アプリケーションのビルド構成です。

  • x86プラットフォームでプロジェクトをビルドした場合、問題を解決するには、次のパッケージをマシンにインストールする必要があります。

    1. 'Microsoft.ACE.OLEDB.12.0'プロバイダーを使用するには、 最初にMicrosoft Access Database Engine 2010再頒布可能パッケージをインストールする必要 があります。このインストールは、http: //www.microsoft.com/download/en/details.aspxで入手できます。 ?id=13255

      インストールが完了したら、アプリケーションを実行してみてください。これで問題が解決する場合は、問題が解決しない場合は、手順2に進みます。

    2. この次のステップは説明のつかない回避策であり、Office 2007のデータ接続コンポーネントであるにもかかわらず、Office 2010で機能します。これが機能する理由はよくわかりませんが、機能し、ほとんどすべての場合に機能することが証明されています。2007 Office System Driver:Data ConnectivityComponentsをインストールする必要があります。このインストールは http://www.microsoft.com/download/en/confirmation.aspx?id=23734で入手できます。

      このインストールが完了したら、アプリケーションを実行してみてください。これで問題が解決するはずです。

  • x64またはAnyCPUプラットフォームで構築されたアプリケーションを実行しようとしている場合は、最初に、x86プラットフォームで期待どおりに実行されることを検証することをお勧めします。そのx86プラットフォームで実行されない場合は、最初の部分の手順を実行し、期待どおりに実行されることを検証します。

    OLEDBデータベースドライバーを含むMSAccessドライバーは、x86プラットフォームでのみ機能し、x64またはAnyCPUプラットフォームでは互換性がないことを読みました。しかし、これは正しくないようです。x86のビルド時にアプリケーションが実行されていることを確認してから、パッシブフラグを使用してAccessDatabaseEngineをインストールしました。

    1. まず、ファイルをローカルにダウンロードします。インストールは次の場所からダウンロードできます:http ://www.microsoft.com/en-us/download/details.aspx?id = 13255
    2. '/passive'フラグを指定したコマンドプロンプトを使用してインストールします。 コマンドプロンプトで、次のコマンドを実行します:'AccessDatabaseEngine_x64.exe /passive'

    これらの2つの手順の後、x64またはAnyCPUビルド構成でビルドした後、なんとかアプリケーションを実行できました。これは私の問題を解決するように見えました。

注:手順の順序に違いがあるようですので、それに応じて実行してください。

于 2015-09-24T08:42:53.907 に答える