前几天,公司原本一个一直运行正常ASP查询程序,安装到一个客户那边突然不能运行了。客户使用的数据库是 Informix,服务器是 Windows2000 Professional 简体中文,而以前我们一直使用测试的数据库是MS-SQLServer。
在定位查询结果页时(即设置 ADODB.Recordset.AbsolutePage 属性时)报错,提示大意:不支持的游标类型。这是很久以前别人做的东东,而我也有一年多没碰过 ADO 了,因此只能依稀感觉可能是 ADO.Recordset 游标的问题,找到指定 Recordset 对象的 Open 处代码,发现其没有显式定义 Recordset 的游标位置(CursorLocation),嗯,如果没记错的话,ADO.Recordset 的默认游标位置是服务器模式的。将 Recordset 的游标位置设为客户端以及游标类型为静态。刷新页面,报错,提示不支持的字符集。找到出错位置为 Recordset 对象的 Open 处。郁闷(半小时)……
发现其是在ASP脚本中直接使用SQL查询语句,并且其中使用 AS 关键字将字段名别称为中文。嗯?可能就是因为这个原因罢,于是取消掉中文别称。再刷新,成功!
我对 Informix 数据库完全陌生,所以不知道为什么会出现这样的情况,但是这足以提醒了我,要做到应用程序跨多数据库平台并不是想象中那么一路顺畅的,至少很多的细节需要考虑和处理,而这是需要相当经验和技巧的。在公司接下来的一个新项目中,其要求一定要支持多种数据库(Oracle、SQLServer、DB2),并且中间层能在 Unix、Linux 和 Windows 平台上运行,看来我需要更加谨慎的态度来预估我的技术设计方案了。