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上,是希望能够对有同样问题的朋友有所帮助,就像我从其他人那里获得帮助一样,何乐而不为呢?
今天终于有时间和机会来鼓捣这件事情。我用的是英文版的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上,是希望能够对有同样问题的朋友有所帮助,就像我从其他人那里获得帮助一样,何乐而不为呢?
相关文章推荐
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 解决使用CFileDialog造成的ADO访问相对路径下的数据库出错问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)
- 64位XP操作系统下访问Access数据库的问题及解决
- 64位windows2008操作系统下asp访问access数据库错误问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 64位XP操作系统下访问Access数据库的问题及解决
- 64位XP操作系统下访问Access数据库的问题及解决
- 使用C++通过ADO访问access数据库的一点问题
- 遇到问题-----ftp---windows----打开FTP文件夹出错--windows无法访问此文件夹。请确保输入的文件名是否正确,并且您有权访问此文件
- SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
- [操作系统设置]解决Win7访问Windows 2003、XP共享慢的问题
- 用ADO常用的连接方式和访问加密的ACCESS数据库
- 关于64位操作系统使用C#访问注册表失败的问题
- 无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever (附加数据库出错的解决方案)
- Com+和数据库访问对象(ADO.Net)的一些问题的研究(2002年12月10日)
- ADO数据库访问问题
- 英文xp操作系统,oracle出现的字符集问题
- 如何通过ADO访问加密后的Access数据库