在Windows XP 32位,MS-Access 2002上未指定错误/“Microsoft.Jet.OLEDB.4.0提供程序未注册”

时间:2012-09-13 11:36:23

标签: vb.net ms-access connection oledb provider

我有一个VB.NET WinForm应用程序,其中打开与MS Access 2002数据库的OLEDB连接,如下所示:

Private Function MakeNewConnection(FullPath) As OleDbConnection
    Dim Conn As OleDbConnection = New OleDbConnection()
    Try
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + FullPath
        Conn.Open()
    Catch ex As Exception
        Throw ex
    End Try

    Return Conn
End Function

虽然这通常很好,但它在Windows XP 32位计算机(SP3)上生成错误偶尔。它是sproradical,因为有时它工作完美,有时它只会抛出一个错误!有两种类型的消息:未指定的错误或“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。您将在本文末尾找到异常的堆栈跟踪。

我已经做了很多搜索。 “提供者”错误主要与64位窗口有关。就我而言,它是一个32位系统!

有什么想法吗?

错误详情:

Error message: Unspecified error
Stack trace:    
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,      OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at QueryAgent.MakeNewConnection()    

Error message: the 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine
Stack trace:    at  System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr,  DataSourceWrapper& datasrcWrapper)
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at QueryAgent.MakeNewConnection()

1 个答案:

答案 0 :(得分:0)

只需从任何CPU选项中将构建选项的构建更改为您的系统(32位)。 转到Build>>>配置>>>然后将构建选项从AnyCPU更改为您的系统特定! 您还从Microsoft下载了第12版的OLE-DB。如果您在VS中使用更高版本的MS Access,这将有所帮助,因为这是我最初可以跨越错误的方式(使用多个操作系统和软件)。 注意:当移动到更高版本的软件时,请维护旧版本(备份),因为如果按照较新版本定制,则可能在较旧版本中无法使用。