我有一个包含两个项目的 Visual Studio 2008 解决方案(一个 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'提供程序。"}
这两个项目都引用了相同的内容,而且当我最初编写这个控制台应用程序(一段时间以前)时,它确实运行正常。 我肯定是漏掉了什么,但我不知道是什么。 有什么想法吗?