最近开发项目用到了Access数据库,在使用中遇到了一些,查阅了许多的资料,在此整理一下。
1、关于32bits和64bits数据库使用的兼容问题
如果数据库连接方式采用Oledb.4.0,在32bits计算机上运行基本没啥问题,但是如果在64bits运行就比较麻烦了。查了好多方法之后,感觉最有效的方法是将项目的编译方式由Any Cpu改为x86,这种方法的弊端在于所有与数据库连接项目有依赖关系的项目都必须采用x86编译方式,显然这种方式很不可取,因为我们在开发项目的时候要顾及到很多方面,不能因为Access数据库就牺牲掉了其他的一些项目。
因为Oledb.4.0在64bits上运行的方式很不可取,所以尽量使用Oledb.12.0的连接方式,这种方式在项目部署时候安装相应的驱动程序包就可以解决32bits和64bits不兼容的问题,但是特别需要注意的是在64bits上安装32bits驱动包是不能够正常连接数据库的,所以必须要装64bits。
Olebd.4.0连接字符串: "Provider=microsoft.jet.oledb.4.0;data source=Test.mdb;password=123;"(access2003及以下版本使用)
Oledb.12.0连接字符串: "Provider=microsoft.Ace.oledb.12.0;data source=Test.accdb;database password=123;"
32bits驱动包(oledb.12.0驱动):https://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine.exe
64bits驱动包(oledb.12.0驱动):https://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine_X64.exe
2、关于用户安全机制问题
我在项目开发中涉及到了数据表读取功能,主要实现的功能是判断当前表是否存在,动态创建数据表。
Access2003及以前版本数据库中有用户安全机制,如果想要读取数据表需要通过数据库工具赋予相应的权限,网上有很多这种说明,通过2007和2010版本也可以对2003以前版本数据库用户组权限进行管理,网上很多的方法都是针对2003及以前版本数据库的。
Access2007及以上版本的数据库已经不存在用户组和权限了,改为了加密和数字签名,所以要想对数据库权限进行设置,必须要采用2003及以前版本的数据库。
网上有很多人说找不到用户组及权限设置的地方,那是因为你的数据库是2007及以上版本的数据库,把数据库另存为.mdb格式,用户组及权限设置的功能就能显示出来了。
看到网上有人说先把数据库保存成.mdb格式,进行用户组权限设置,再另存为.accdb格式,这样就具有数据表操作权限,但是没有验证过不知道能不能用。