none
惨了!大问题了!The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine! RRS feed

  • 问题

  • 我机器是Windows 7 64位,安装了OFFICE 2010、Visual Studio 2008/2010。

    连接ACCESS数据就出问题了,提示“The  'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine”。不可能的啊,因为我2010中用.NET 40是可以浏览的(WEB项目)。但用2008的.NET 2.0就提示这个错误信息了。

    所有以前2.0的项目均不可以连接。

    这是.NET 4.0

                OleDbConnection db = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Environment.CurrentDirectory + "\\db.mdb");
                db.Open();

    没出现错误。

    这是.NET 2.0

                OleDbConnection db = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Environment.CurrentDirectory + "\\db.mdb");
                db.Open();

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.InvalidOperationException: The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
       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 JL.DBUtility.DbHelperOleDb.Query(String SQLString)
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.WmShowWindow(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    为“金”之计“问”。

    2012年7月9日 6:55

答案

  • dear

    OLEDB 不支援x64是肯定的事,我用VS2010/VS2008 的.net 2.0 / x86 platform 模式均可顺利执行(模拟WOW下执行),可能是我有在定其更新OS的关系

    我无法模拟出你的错误,你参考以下看看

    http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/d5b29496-d6a1-4ecf-b1a4-5550d80b84b6

    http://blogs.msdn.com/b/data/archive/2008/04/07/64-bit-oledb-provider-for-odbc-msdasql-is-now-available-for-windows-server-2003.aspx

    http://www.microsoft.com/en-us/download/details.aspx?id=20065

    我用下篇的方式,可以让机器执行x64的OLEDB

    http://www.dotblogs.com.tw/okawari/archive/2010/11/16/19483.aspx

    你也可以试看看


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/



    2012年7月9日 15:36

全部回复

  • 怎么会这样?VS2008 .NET 2.0 的WEB项目不可以,而VS2010 .NET 4.0的项目可以。

    VS2008 .NET 2.0的目标平台,我设置为X86了。也是不行!!!晕晕晕哦。我是用WEB内置的服务器浏览WEB的。晕晕晕晕


    为“金”之计“问”。

    2012年7月9日 6:58
  • Dear

    OLEDB不支援x64的OS

    你可试着用以下的方式解决

    http://www.dotblogs.com.tw/okawari/archive/2010/11/16/19483.aspx

    http://lenchung.wordpress.com/2010/01/18/20100118-jet-oledb-on-x64-os-iis/

    http://tw.myblog.yahoo.com/terence-lee/article?mid=168


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年7月9日 12:04
  • Dear

    OLEDB不支援x64的OS

    你可试着用以下的方式解决

    http://www.dotblogs.com.tw/okawari/archive/2010/11/16/19483.aspx

    http://lenchung.wordpress.com/2010/01/18/20100118-jet-oledb-on-x64-os-iis/

    http://tw.myblog.yahoo.com/terence-lee/article?mid=168


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    难啊…… ,但是VS2010 用.NET 4.0可以支持,这个又怎么解释呢?

    为“金”之计“问”。

    2012年7月9日 13:53
  • dear

    OLEDB 不支援x64是肯定的事,我用VS2010/VS2008 的.net 2.0 / x86 platform 模式均可顺利执行(模拟WOW下执行),可能是我有在定其更新OS的关系

    我无法模拟出你的错误,你参考以下看看

    http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/d5b29496-d6a1-4ecf-b1a4-5550d80b84b6

    http://blogs.msdn.com/b/data/archive/2008/04/07/64-bit-oledb-provider-for-odbc-msdasql-is-now-available-for-windows-server-2003.aspx

    http://www.microsoft.com/en-us/download/details.aspx?id=20065

    我用下篇的方式,可以让机器执行x64的OLEDB

    http://www.dotblogs.com.tw/okawari/archive/2010/11/16/19483.aspx

    你也可以试看看


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/



    2012年7月9日 15:36