请问Microsoft.ACE.OLEDB.12.0提供程序未注册

Microsoft.ACE.OLEDB.12.0提供程序未注册

我有一个带有两个项目的Visual Studio 2008解决方案(一个Word-Template项目和一个用于测试的VB.Net控制台应用程序)。这两个项目都引用一个数据库项目,该项目打开与MS-Access 2007数据库文件的连接,并引用System.Data.OleDb。在数据库项目中,我有一个函数,它按如下方式检索数据表

 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string
   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"
   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub
   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Dim localCon As New OleDbConnection
        localCon.ConnectionString = strAdminConnection
        Using localCon
            Dim command As OleDbCommand = localCon.CreateCommand()
            command.CommandText = sqlStatement
            localCon.Open()
            da.SelectCommand = command
            da.Fill(dt)
            getDataTable = dt
        End Using
    End FunctionEnd Class

当我从我的Word 2007模板项目中调用此函数时,一切正常; 没有错误。但是当我从控制台应用程序运行它时会抛出以下异常

ex = {“'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。”}

两个项目具有相同的引用,并且控制台应用程序在我第一次编写时(前一段时间)确实有效,但现在它已停止工作。我必须遗漏一些东西,但我不知道是什么。有任何想法吗?


波斯汪
浏览 969回答 3
3回答

蓝山帝景

我有Visual Basic 2008的Visual Basic程序使用Access 2007数据库并收到相同的错误。我找到了一些线程,如果你运行的是64位系统,建议将高级编译配置更改为程序属性中的x86。到目前为止,我的程序没有任何问题。

慕的地10843

您运行的是64位系统,数据库运行32位但控制台运行64位吗?没有运行64位的MS Access驱动程序,并且会报告与您报告的错误相同的错误。
打开App,查看更多内容
随时随地看视频慕课网APP