以前用的informix数据库有9.4和10.0版本的,客户端用ibm的cli.2.81.TC3的,jdbc用的是V3.0的,现在数据库版本升级为11.5,结果本来正常运行的程序报错。查看数据库连接正常,执行update语句报错,简单的sql语句:delete from dcl_tmp,错误:SQLException错误信息:主变量给的过多或是不足。
经过排查,程序里jdbc操作封装类应该没有问题,参数传递也没问题;数据库能连接,其他工具连接数据库操作也没有问题,说明数据库正常;那么只有怀疑informix的客户端和jdbc的驱动了,在网上搜索后,更换cli.2.91.TC6问题依旧。下载jdbc V3.5后,程序运行正常。只是jdbc V3.0和jdbc V3.5的url稍有不同。
其中V3.0的url为:jdbc:informix-sqli://ip:port/dbname:informixserver=myserver;newlocale=en_us,zh_cn;newcodeset=gbk,8859-1,819;而V3.5的url为:jdbc:informix-sqli://ip:port/dbname:informixserver=myserver;newlocale=en_us,zh_cn;newcodeset=gbk,8859-1,819;IFX_USE_STRENC=true;
informix的jdbc V3.5的驱动下载地址:http://d.download.youkuaiyun.com/down/3385803/wula0010