我有一个带有两个项目的Visual Studio2008解决方案(一个Word模板项目和一个用于测试的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 Function
End Class
当我从Word 2007模板项目中调用此函数时,一切正常;没有错误。但是,当我从控制台应用程序运行它时,它抛出以下异常
ex ={“本地计算机上未注册'Microsoft.ACE.OLEDB.12.0‘提供程序。”}
这两个项目具有相同的引用,并且控制台应用程序在我第一次编写它时(一段时间前)确实可以工作,但现在它已经停止工作。我一定是错过了什么,但我不知道是什么。有什么想法吗?
发布于 2009-01-26 03:45:23
我有一个使用visual Studio2008的Visual Basic程序,它使用Access 2007数据库,并且收到了相同的错误。我发现一些线程建议将高级编译配置更改为x86,如果您运行的是64位系统,请在程序属性中找到。到目前为止,我的程序还没有出现任何问题。
发布于 2010-04-16 04:11:13
基本上,如果您使用的是64位计算机,则IIS7(默认情况下)不会提供数据库引擎运行的32位应用程序。下面就是你要做的:
1)确保安装了2007数据库引擎,下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
2)打开IIS7管理器,打开应用程序池区域。在右边的边栏上,你会看到一个选项,上面写着"Set application pool default“。单击它,将弹出一个窗口,其中包含选项。
3)向下的第二个字段表示“启用32位应用程序”,默认情况下可能设置为FALSE。只需单击显示为“false”的位置即可将其更改为“true”。
4)重启你的应用程序池(你可以通过点击RECYCLE而不是STOP然后START来做到这一点,这也会起作用)。
5)完成,您的错误消息将消失。
发布于 2008-10-26 22:19:58
您是否正在运行64位系统,其中数据库运行32位,而控制台运行64位?没有运行64位的MS Access驱动程序,并且会报告与您报告的错误相同的错误。
https://stackoverflow.com/questions/238625
复制相似问题