我最近开发了一个winform项目,用的是access数据库,当开发成功以后,有些电脑上就能正常运行,有些电脑就无法读取数据库文件,刚开始我以为是权限问题,后来我把安装程序卸载了,装在其它盘中(非C盘),奇迹发生了,正常运行,但是我又在其它电脑上安装不管是C盘还是其它盘都不行,后来我以为是电脑上没有安装ACCess的问题。后来我安装了ACCESS,也安装了Microsoft Data Access Components ,但是还是不行。
后来我写了一个日志,看看了日志
也就是说,不是我系统的问题,而是数据源的问题。
那么既然是数据源的问题,我觉得还是从我的开发环境开始解决。 那么我的开发环境安装的是2010的access,而运行环境是2007和2013的。其实区别就在于版本不同。后来我就有一个疑问,如果用access数据库做开发,难道说运行环境必须要安装对应的Office吗?我网上找了一些资料,后来发现,其实在客户端我们其实是不需要安装office的,只需要安装一个ODBC的数据源驱动即可。(因为之前一直在用sql和oracle,相对于access是比较少的。所以这次遇到问题,虽然有点基础,但是还是让我有点小郁闷)
但是我之前确实安装过了,AccessDatabaseEngine但是一直也没有什么卵用,一直不知道什么原因,在网上找了很多,大多是两个版本,第一个说的是,需要安装对应的office,第二个版本是不需要安装office,但是必须要安装一个ODBC的数据源驱动。其实从一开始我就不赞同第一种方案,因为我不可能让没有用户都去安装一个office,如果小的话还行,但是每一个最起码要1个多GB,这样太不现实。那么第二个方案真不知道哪里出了问题,一直没有什么头绪,后来我写了一个日志,报出来的错误就是“无法识别数据库格式“.accdb”",后来在office的官网上无意中发现一个问题,其实AccessDatabaseEngine也是有版本的,其中有Microsoft Access Database Engine 2007 Redistributable,Microsoft Access Database Engine 2010 Redistributable,Microsoft Access Database Engine 2010 Redistributable_X64等,后来我按照我本地的开发环境,下载了一个Microsoft Access Database Engine 2010 Redistributable后来奇迹终于发生了。
虽然只是些基础的知识,希望对大家有用。