Java 程序连接 Informix 数据库方法实例介绍

Informix 是一种应用广泛的关系型数据库服务器,支持多种类型的客户端连接程序,包括 .Net、Java、PHP 等。对于 Java 程序,Informix 支持两种 JDBC 供客户端连接。本文对这两种 JDBC 进行详细介绍,并给出 Java 使用两种方法连接 Informix 的方法和实例,对数据库开发人员具有指导意义

开您的试用

概述

Informix 是一种应用广泛的关系型数据库服务器,支持多种类型的客户端连接程序,包括 .Net、Java、PHP 等。对于 Java 程序,Informix 支持两种 JDBC 供客户端连接,分别是 IBM Informix JDBC 和 IBM Data Server driver for JDBC and SQL/J。本文对这两种 JDBC 进行详细介绍,并给出 Java 使用两种方法连接 Informix 的方法和实例。

JDK

JDK(Java Development Kit)是用来开发、编译和运行 java 应用程序的软件。在配置 JDBC 之前,应首先安装配置好 JDK。JDK 可以从 Oracle 网站上下载得到。安装完 JDK 后,需设置 JDK 的环境变量。(本文中的示例均是在 Linux 平台下的配置)

清单 1. 设置 JDK 的环境变量
JAVA_HOME=/usr/java/jdk1.7.0_21
JRE_HOME=/usr/java/jdk1.7.0_21/jre
PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/bin
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

安装完 JDK 并设置完相关环境变量后,可以使用以下程序测试 JDK 是否可用。

清单 2. 测试 Java 程序 hello.java
public class hello {
public static void main(String args [ ])
{ System.out.println("Hello World!");
System.out.println("JDK installation is successful!");
}
}

编译 Java 程序:$ javac hello.java

执行 Java 程序:$ java hello

回页首

JDBC

JDBC(Java DataBase Connectivity)是用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,由一组用 Java 语言 编写的类和接口组成。图 1 为 Java 程序使用 JDBC 连接数据库的示意图。

图 1. Java 程序使用 JDBC 连接数据库示意图

Informix 支持两种 JDBC,分别是 IBM Informix JDBC Driver 和 IBM Data Server driver for JDBC and SQL/J。

IBM Informix JDBC Driver 是 Informix 软件内置的 JDBC 驱动,支持 SQLI 通信协议。IBM Informix JDBC Driver 支持所有的 Informix 数据类型。IBM Informix JDBC Driver 符合 JavaSoft 的 JDBC 规范。

IBM Data Server driver for JDBC and SQL/J 是 IBM 通用的 JDBC 驱动,可用于连接 DB2 和 Informix 数据库,符合 Sun Microsystems 的 JDBC3.0 和 JDBC4.0 规范。IBM Data Server driver for JDBC and SQL/J 支持 DRDA(Distributed Relational Database Architecture)协议。(DRDA 协议是协调在不同平台上的应用程序和数据库系统通信的一套协议,基于 Open Group 的数据库互操作标准。)

IBM Data Server driver for JDBC and SQL/J 连接 Informix 具有如下限制:

  1. 只支持 Informix 11 或更高版本
  2. 不支持以下 Informix 数据类型
  • Complex types: ROW、SET、MULTISET、LIST
  • Opaque types
  • Interval type
  • Boolean:Boolean 类型被当成 smallint 类型

在 Java 程序中,创建和 Informix 数据库的连接需要使用 DriverManager.getConnection() 方法,该方法中的 URL 参数为一个数据库的连接字符串,指定数据库连接机制、数据库实例名、数据库等信息。

下面介绍 Java 程序在使用这两种不同的 JDBC 连接数据库的配置方法。

回页首

IBM Informix JDBC Driver

安装配置 JDBC

IBM Informix JDBC Driver 安装软件集成在 Informix 软件安装包,安装 Informix 时选择 Typical 选项包含该驱动,JDBC 的安装路径为:${INFORMIXDIR}/jdbc。单独的 Informix JDBC 也可以从 IBM 网站下载 (下载链接见参考资料),当前最新的版本为 4.10。

安装完 IBM Informix JDBC Driver 后,需要将文件 ifxjdbc.jar 添加到环境变量 CLASSPATH 中。

清单 3. 设置 IBM Informix JDBC Driver 环境变量
CLASSPATH=${CLASSPATH}:${INFORMIXDIR}/jdbc/lib/ifxjdbc.jarexport CLASSPATH

设置 JDBC 连接字符串

在 Java 程序中使用 JDBC 连接数据库,首先应该加载使用的 JDBC 类,IBM Informix JDBC Driver 的类名为 com.informix.jdbc.IfxDriver。

建立 Java 程序与 Informix 数据库的连接需要使用 DriverManager.getConnection() 方法,该方法中的 URL 参数为一个数据库的连接字符串,指定数据库的连接信息。使用不同的 JDBC 所需的 URL 参数也不相同。

使用 IBM Informix JDBC Driver 连接数据库,连接字符串的格式如下:

清单 4. 使用 IBM Informix JDBC Driver,连接字符串格式
jdbc:informix-sqli://[{ip-address|host-name}:{port-number|service-name}][/dbname]:
INFORMIXSERVER=servername[{;user=user;password=password]
|CSM=(SSO=database_server@realm,ENC=true)} [;name=value[;name=value]...]

其中,“jdbc:informix-sqli”指定使用的 JDBC 为 IBM Informix JDBC Driver;

“{ip-address|host-name}”为数据库服务器的 IP 地址主机名;

{port-number|service-name}”为数据库服务器监听客户端连接的端口号或服务名;

dbname”为数据库名;

servername”为数据库实例名。

回页首

IBM Data Server driver for JDBC and SQL/J

安装配置 JDBC

IBM Data Server driver for JDBC and SQL/J 是独立于 Informix 的软件,已集成在 DB2 客户端软件。单独的 IBM Data Server driver for JDBC and SQL/J 可以从 IBM 网站下载 (下载链接见参考资料)。

安装完 IBM Data Server driver for JDBC and SQL/J 后,需要将文件 db2jcc.jar 添加到环境变量 CLASSPATH 中。

清单 5. 设置 IBM Data Server driver for JDBC and SQL/J 环境变量
CLASSPATH=${CLASSPATH}:${JDBC_HOME}/jdbc_sqlj_driver/db2jcc.jar
export CLASSPATH

设置 JDBC 连接字符串

在 Java 程序中使用 JDBC 连接数据库,首先应该加载使用的 JDBC 类,IBM Data Server driver for JDBC and SQL/J 的类名为 com.ibm.db2.jcc.DB2Driver。

使用 IBM Data Server driver for JDBC and SQL/J 连接数据库,连接字符串的格式如下:

清单 6. 使用 IBM Data Server driver for JDBC and SQL/J,连接字符串格式
jdbc:ids://{ip-address|host-name}:{port-number}/{dbname}:
[name=value[;name=value]. . .]

其中,“jdbc:ids”指定使用的 JDBC 为 IBM Data Server driver for JDBC and SQL/J,且连接的数据库类型为 Informix;

“{ip-address|host-name}”为数据库服务器的 IP 地址主机名;

{port-number}”为数据库服务器监听客户端连接的端口号;

dbname”为数据库名。

使用 IBM Data Server driver for JDBC and SQL/J 连接 Informix 数据库不用指定数据库实例名。

回页首

Java 程序连接 Informix 数据库实例

Informix 实例环境

IP:9.123.147.100

Informix 实例名:demoserver、demoserver_drda

sqlhosts 文件:

清单 7. 服务器 sqlhosts 文件
demoserver onsoctcp 9.123.147.100 9088
demoserver_drda drsoctcp 9.123.147.100 10000

连接 Informix 数据库的 Java 程序

下面是连接 Informix 数据库的 Java 程序,先后使用 IBM Informix JDBC 和 IBM Data Server driver for JDBC and SQL/J 进行连接。从 sqlhosts 文件可以看到 Informix 实例配置了 2 个实例别名 demoserver 和 demoserver_drda,分别支持标准的 Informix 协议和 DRDA 协议。在使用 IBM Informix JDBC 连接数据库时,我们连接的是 demoserver,而使用 IBM Data Server driver for JDBC and SQL/J 时,连接的是 demoserver_drda。

清单 8. 连接 Informix 数据库 Java 程序
import java.util.*;
import java.sql.*;
public class test_jdbc {
private static String URL_STRING[] = {
"jdbc:informix-sqli://9.123.147.100:9088/sysmaster:INFORMIXSERVER=demoserver",
"jdbc:ids://9.123.147.100:10000/sysmaster"
} ;
private static String USER = "informix";
private static String PASSWORD = "informix1";
public static void main( String[] args)
throws SQLException, ClassNotFoundException {
Connection conn;
Class.forName("com.informix.jdbc.IfxDriver");
Class.forName("com.ibm.db2.jcc.DB2Driver");
for (int i = 0; i < 2; i++) {
try {
System.out.println("Testing JDBC URL: " + URL_STRING[i]);
conn = DriverManager.getConnection(URL_STRING[i], USER, PASSWORD);
System.out.println("connect successfully");
conn.close();
} catch( Exception e) {
e.printStackTrace();
}
}
return;
}
}

回页首

结束语

本文介绍了 Java 程序连接 Informix 数据库的两种 JDBC,IBM Informix JDBC 和 IBM Data Server driver for JDBC and SQL/J,以及两种 JDBC 的安装配置和使用方法,并提供了示例程序,希望这篇文章对您开发应用程序有所帮助。

参考资料

学习

  • 参考 Informix 11.7 信息中心,获得更多 Informix、DRDA、JDBC 的相关知识。
  • 阅读文章“IDS Application Development Getting Started”,了解更多有关 Informix 数据库的应用开发的内容。
  • 在 developerWorks 大数据专区,了解关于大数据的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
  • 在 developerWorks Information Management 专区,了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。

获得产品和技术

  • 下载 IBM Informix。
  • 下载 IBM Informix JDBC Driver。
  • 下载 IBM Data Server driver for JDBC and SQL/J。

讨论

  • 加入 developerWorks 中文社区,查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

请 登录 或 注册 后发表评论。

添加评论:

注意:评论中不支持 HTML 语法

有新评论时提醒我剩余 1000 字符

共有评论 (2)

这种方式在网上也没找到有用的解决办法,希望你能提供下帮助!谢谢!!

由 Lilac 于 2015年10月09日发布

报告滥用

你好! 我在使用DB2连接informix11.7时报错:
Testing JDBC URL: jdbc:ids://192.168.1.133:9089/sysmaster
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2043][11550]3.66.46 异常 java.net.ConnectException:打开端口 9,089 上服务器 /192.168.1.133 的套接字时出错,消息为:Connection refused: connect。 ERRORCODE=-4499, SQLSTATE=08001
at com.ibm.db2.jcc.am.dd.a(dd.java:321)
at com.ibm.db2.jcc.am.dd.a(dd.java:402)
at com.ibm.db2.jcc.t4.yb.a(yb.java:439)
at com.ibm.db2.jcc.t4.yb.<init>(yb.java:96)
at com.ibm.db2.jcc.t4.a.b(a.java:354)
at com.ibm.db2.jcc.t4.b.newAgent_(b.java:2049)
at com.ibm.db2.jcc.am.Connection.initConnection(Connection.java:730)
at com.ibm.db2.jcc.am.Connection.<init>(Connection.java:676)
at com.ibm.db2.jcc.t4.b.<init>(b.java:333)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:233)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:199)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:474)
at com.ibm.db2.jcc.DB2Drive

Java 程序连接 Informix 数据库方法实例介绍相关推荐

  1. java 数据库连接实例,Java连接各种数据库的实例

    Java连接各种数据库的实例 1.Oracle8/8i/9i数据库(thin模式) 以下为引用的内容: Class.forName("oracle.jdbc.driver.OracleDri ...

  2. Java.io.File.getPath()方法实例

    转载自  Java.io.File.getPath()方法实例 java.io.File.getPath() 方法将抽象路径名到路径名字符串.为了分离名称的序列所产生的字符串使用默认名称分隔符. 声明 ...

  3. java为什么运行不了mysql_运行java程序连接mysql数据库是出现如下结果怎么回事?...

    运行java程序连接mysql数据库是出现如下结果怎么回事? 关注:160  答案:3  mip版 解决时间 2021-01-24 13:56 提问者你若离去丶巴掌扇去 2021-01-24 05:2 ...

  4. java连接informix数据库

    前言 业务中需要连接informix数据库,没连接过,写篇博客记录下连接方法 1.application.yml server:port: 8081 spring:http:multipart:ena ...

  5. java迭代器在哪个包里面,java.util.LinkedList.listIterator()方法实例

    全屏 java.util.LinkedList.listIterator(int index)方法返回一个列表迭代器在此列表中的元素(按适当顺序),从列表中的指定位置. 声明 以下是java.util ...

  6. mysql数据库java链接,java链接MySQL数据库方法

    第一步:安装MySQL 这步我就很少说了,点击去看看怎么安装吧.html 第二步:建立数据库 安装好以后,咱们来建立一个数据库,一个表.(代码以下). //建立数据库 test: //在数据库中建立表 ...

  7. java.util.IdentityHashMap.entrySet()方法实例

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. entrySet() 方法是用来获取此映射中包含的映射关系的set视图. 声明 以下是java.ut ...

  8. daemons java,java.lang.ThreadGroup.isDaemon()方法实例

    全屏 java.lang.ThreadGroup.isDaemon()方法测试此线程组是否为一个后台程序线程组.当其最后一个线程被停止或它的最后一个线程组被销毁守护线程组会自动销毁. 声明 以下是ja ...

  9. java treemap lastkey,java.util.TreeMap.higherKey()方法实例

    全屏 higherKey(K key)方法用于返回最近键严格小于给定键,或null,如果不存在这样的键 声明 以下是java.util.TreeMap.higherKey()方法的声明.public  ...

最新文章

  1. 从文件管理到获取洞见,AI 正在彻底变革企业内容管理
  2. MYSQL为用户指定权限有哪些
  3. [ZJOI 2010]count 数字计数
  4. linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录
  5. 用闭包实现重载的过程学习闭包
  6. 【渝粤题库】陕西师范大学200831 编译原理 作业
  7. 苹果公司的企业文化_百度、苹果、脉脉等互联网大厂的企业文化衫还能这么潮?...
  8. 格式小结 css 0926
  9. python---字符编码
  10. 做好前端的话HTML和CSS基础必须夯实!
  11. 洛谷 P1454【圣诞夜的极光】
  12. 太火了!MyBatis-Plus为啥这么牛?
  13. apache配置说明
  14. 在MATLAB中绘制水平线和垂直线的一些方法
  15. 用四叉树管理散布在平面上的对象
  16. 【hive】hive如何将Jan 1, 2021 12:40:46 PM时间格式转换为指定格式
  17. cesium两种方式鼠标移入移出实体显示提示框
  18. 在滴滴云上搭建 API-Gateway Kong 实践
  19. 老款Tplink路由器如何桥接
  20. win10查看打印机端口

热门文章

  1. SpringBoot入门第一个简单示例
  2. 【感悟】人生本如梦,学会看淡一切。
  3. CentOS内核升级
  4. 立即修复!微软史上最严重漏洞之一 Netlogon 细节被公开,三秒接管企业网络
  5. Save as XPS in Office “12”
  6. xposed环境搭建
  7. java测试驱动开发(TDD)之《井字游戏》
  8. 记一次open-falcon手动push数据
  9. fiddler 抓取 安卓模拟器 https包
  10. Android 手机不赚钱为啥还要做