您的位置:首页 > 数据库

ADO访问Access数据库在英文操作系统上出错的问题

2006-12-20 23:40 260 查看
客户为国外用户,使用的是英文版的Windows XP,结果使用我们的程序一启动就报ODBC数据库访问错误。由于他们并不是我们的直接客户,所以为了这个问题前前后后沟通了很长时间,我不知道他们会怎么评价我们的办事能力,但自己觉得有点汗颜。其实这也并不是很难的事情,主要是没有时间来顾及此事(这部分内容是由另外一个同事开发的),再有就是一直没搞到英文版的操作系统。

今天终于有时间和机会来鼓捣这件事情。我用的是英文版的Windows 2003,为了与国外用户的环境保持一致,我去掉了东亚语言支持,然后运行程序,错误出现,关键信息如下:

Cannot open database xxx. It may not be a database that your application recognizes, or the file may be corrupt.
解决此类问题的最好办法便是google,不出所料,我找到了相应内容,微软有一篇文章对此问题做了说明:
http://support.microsoft.com/kb/310937/zh-cn

文章中指出问题的出现是由于采用了Access 2000/2002的驱动来访问Access 97文件格式并且Microsoft Jet 3.x注册表项丢失造成的,我这才想起同事使用的是Access 97创建的数据库文件。当我兴高采烈的按照文中的说明去检查注册表项时,却发现我的电脑中含有这一项内容,这该如何是好?

想来想去,既然问题是由于Access文件格式引起的,我决定采用Access 2003新建一个数据库文件(可以直接选择“工具”下的数据库格式转换工具来完成此项工作)。

使用新的文件替换掉旧的文件后,打开数据库文件时不出错了,而执行SQL语句时又蹦出新的错误:

Selected collating sequence not supported by the operating system
这可如何是好?继续google之,发现好心人真不少,原来上述问题是因为我是在中文环境下创建的Access文件,其默认的排序方式为中文排序方式,放到纯英文系统上便会出现问题。

解决方法为,将“工具->选项->常规->新建数据库排序次序”由中文改为“常规”,然后选择“新建->空数据库”,再执行“文件->获取外部数据->导入”,将以前的文件内容全部导入进来即可。参见http://blog.csdn.net/wishfly/archive/2006/03/21/631663.aspx

试试新的文件,顺利通过,我心中不免舒了一口气。当然,为此我做了更多的内容,比如依次尝试使用Access 2002、2000和97格式的文件,从而选择合适版本。本来还打算改成动态创建数据库表格的,由于手里的事情很多而放弃了。其实,我更希望将数据库改成BerkeleyDB或者SQLite,因为它们更适合我们这套软件的应用。

最后再发一点感言,我之所以喜欢把自己解决问题的方法发到blog上,是希望能够对有同样问题的朋友有所帮助,就像我从其他人那里获得帮助一样,何乐而不为呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐