l 操作环境:win7 64位操作系统,office 2016 64位,ArcGIS 32位,C#程序
l 问题描述:客户提出“管线数据入库”功能,将外业数据(CAD质检程序导出的标准库)转成空间数据库geodatabase时,提示外业数据库为不可识别的数据库。
l 解决过程:
Access数据格式目前有三种
1) Microsoft Access 数据库(2000格式)(*.mdb)
2) Microsoft Access 数据库(2002-2003格式)(*.mdb)
3) Microsoft Access 2007-2016数据库(*.accdb):根据电脑中安装office版本有所变动,但都是2007+,此格式默认数据格式为.accdb,可以改成mdb,但本质上不会改变数据格式。
与CAD开发人员核实,标准库Access格式为2007+格式;查看代码CS程序连接外业数据库时采用的连接字符串为Microsoft.Jet.OLEDB.4.0,改成Microsoft.ACE.OLEDB.12.0,重新编译程序,测试程序提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”错误信息,经上网查询得知
Microsoft.Jet.OLEDB.4.0:提出的比较早,使用于2000格式、2002-2003格式,且数据引擎为微软自带,不支持2007+格式;
Microsoft.ACE.OLEDB.12.0:兼容以上所有access版本,但要想利用该功能,必须在电脑上安装2007数据库连接组件AccessDatabaseEngine.exe,此组件位数与电脑上安装的office有关,即office为64,此组件也要下载64位。
安装后,再次测试该功能,可用;
弊端:若将程序中所有连接字符串都改成12.0,就需要在电脑中安装2007数据库连接组件,对于CS程序安装部署是一件麻烦事。
疑点:经测试安装2016版本的数据库连接组件,程序不好用。不清楚是否无论电脑上安装何总版本office,都需要另装2007的组件。
参考网站资料:
https://www.cnblogs.com/jinianjun/archive/2011/12/05/2276679.html
2007数据库连接组件下载地址:http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe