在java中连接informix
网上有些关于这个的文章,纯粹扯淡(关于驱动的jar包,解决中文乱码的),
仅需一个jar包,
1,添加驱动
然后如果用maven管理项目
下载到本地仓
或者将
com.ibm.informix
jdbc
4.10.9
此段代码复制到项目的pom.xml中
2.代码中书写url
String url= "jdbc:informix-sqli://"+ip+":"+port+"/"+databaseName+":INFORMIXSERVER="+serverName+";NEWCODESET=GB2312,8859-1,819;IFX_USE_STRENC=true";
对url中的个参数做解释:ip 数据库的ip地址,port 数据库端口号,databaseName 数据库名称,
serverName 数据库服务名称(安装informix数据库时创建),NEWCODESET中三个编码依次分别是
(1)客户端存入或查询出数据使用的编码集(可以utf8,GB2312,gb18030,以上三种支持中文),按照格式随意指定字符集,只要保持查询数据时候与插入数据时候使用的一致便不会乱码。
(2)数据库编码集(可以是8859-1,gb18030-2000(支持中文)),改字符集是在安装时候在数据库配置文件中指定的,并且环境变量生效的,可以使用sql:select site from informix.systables where tabname = ’ GL_COLLATE’ 查询出来,活着在环境变量里查看。
(3)编码集在informix字典中的编号 例如819即iso8859-1,5488 即gb18030(本人目前只是用过以上两种,并不表示只支持此两种),翻过informix的驱动支持的如下:
static {
if (IfxToJdkEncodingTable == null) {
IfxToJdkEncodingTable = new Hashtable();
IfxToJdkEncodingTable.put("8859-1", "ISO8859_1");
IfxToJdkEncodingTable.put("8859-2", "ISO8859_2");
IfxToJdkEncodingTable.put("8859-3", "ISO8859_3");
IfxToJdkEncodingTable.put("8859-4", "ISO8859_4");
IfxToJdkEncodingTable.put("8859-5", "ISO8859_5");
IfxToJdkEncodingTable.put("8859-6", "ISO8859_6");
IfxToJdkEncodingTable.put("8859-7", "ISO8859_7");
IfxToJdkEncodingTable.put("8859-8", "ISO8859_8");
IfxToJdkEncodingTable.put("8859-9", "ISO8859_9");
IfxToJdkEncodingTable.put("8859-13", "ISO8859_13");
IfxToJdkEncodingTable.put("8859-15", "ISO8859_15_FDIS");
IfxToJdkEncodingTable.put("Latin-9", "ISO8859_15_FDIS");
IfxToJdkEncodingTable.put("ASCII", "ASCII");
IfxToJdkEncodingTable.put("sjis-s", "SJIS");
IfxToJdkEncodingTable.put("utf8", "UTF8");
IfxToJdkEncodingTable.put("big5", "Big5");
IfxToJdkEncodingTable.put("CP1250", "Cp1250");
IfxToJdkEncodingTable.put("CP1251", "Cp1251");
IfxToJdkEncodingTable.put("CP1252", "Cp1252");
IfxToJdkEncodingTable.put("CP1253", "Cp1253");
IfxToJdkEncodingTable.put("CP1254", "Cp1254");
IfxToJdkEncodingTable.put("CP1255", "Cp1255");
IfxToJdkEncodingTable.put("CP1256", "Cp1256");
IfxToJdkEncodingTable.put("CP1257", "Cp1257");
IfxToJdkEncodingTable.put("cp949", "KSC5601");
IfxToJdkEncodingTable.put("KS5601", "KSC5601");
IfxToJdkEncodingTable.put("ksc", "KSC5601");
IfxToJdkEncodingTable.put("gb", "GBK");
IfxToJdkEncodingTable.put("GB2312-80", "GBK");
IfxToJdkEncodingTable.put("cp936", "GBK");
IfxToJdkEncodingTable.put("CP850", "