zoukankan      html  css  js  c++  java
  • Microsoft.Jet.OLEDB.4.0 未注册! 野峰

    一段简单的访问 Access 数据库的测试代码:

    using System;
    using System.Data.OleDb;
    public class DbTest
    {
        public static void Main()
        {
            string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb";
            OleDbConnection cn = null;
     
            try
            {
                cn = new OleDbConnection(cnstr);
                cn.Open();
                Console.WriteLine("Database opened.");
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
            finally
            {
                if (cn != null) { cn.Dispose(); }
            }
        }
    }

    在朋友的机器上通不过,显示Microsoft.Jet.OLEDB.4.0 未注册!
    折腾半天,问题出在 x86 or x64 上!我的机器是32位系统,朋友的机器是64位系统。Microsoft Office 2003 的 Microsoft.Jet.OLEDB.4.0 和 Office 2007 的 Microsoft.ACE.OLEDB.12.0 都不支持64位!

    在MSDN上搜索一下,遇到这个问题的还真不少!

    解决方案(两者均可):

    1、将上面的代码编译为32位代码
    命令行开关指定 /platform:x86

    csc /platform:x86 DbTest.cs

    注:对于 Visual Studio 中的项目,打开项目的属性页,在 生成 页,指定 目标平台 为 x86。

    2、安装64位的 ACE OLEDB Provider
    微软为 Office 2010 提供的 Access Database Engine 有 64 位版本,下载地址如下:
    http://www.microsoft.com/en-us/download/details.aspx?id=13255

    注:如果机器上已经安装有32位的 Office 2010,则安装 64 位的 Access Database Engine 时,需要指定 /passive 选项,如下:
    AccessDatabaseEngine_X64.exe /passive

    连接字符串(ConnectionString)的写法

    1、对于 Office 2000-2003 的数据库引擎
    string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;";

    2、对于 Office 2007 的数据库引擎
    string cnstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db1.mdb;";

    3、对于 Office 2010 的数据库引擎
    string cnstr = "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=db1.mdb;";

    Access Database Engine(主要是 ACE OLEDB Provider)不仅用于访问 Access 数据库,也可以用于访问 Excel 文件。


  • 相关阅读:
    python正则表达式中括号的作用,形如 "(w+)s+w+"
    python中的分号(“;”)
    连接数据库报错Access denied for user 'root'@'localhost' (using password:YES)
    python中,字符串前的u,b,r字符的含义
    pycharm连接数据库报错Access denied for user 'root'@'localhost' (using password:YES),以及wampserver 2/3个服务器正在运行 问题
    制作手风琴效果时发现新大陆,好吧,其实是一个bug
    行内元素的上下margin 和 img元素的上下margin
    Django——Model的使用
    django book学习问题记录
    psql命令行快速参考
  • 原文地址:https://www.cnblogs.com/prowyh/p/2793824.html
Copyright © 2011-2022 走看看