JAVA JDBC连接DB2数据库问题

JAVA JDBC连接DB2数据库问题,第1张

JAVA连接DB2

/了解基础情况/ 对于Java程序员而言,DB2 提供了两种应用程序编程接口(API):JDBC 和 SQLJ。

JDBC:

JDBC 驱动程序分为旧的/CLI 驱动程序<db2javazip>和新的通用 JDBC 驱动程序(Universal JDBC Driver)<db2jccjar>。

JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向您的应用程序提供数据访问。

JDBC 类似于 DB2 CLI,因为您无须预编译应用程序代码,也无须将软件包绑定到 DB2 数据库

作为一个与供应商无关的标准,JDBC 应用程序提供了更多的可移植性—这是当今异构业务基础设施所必需的优点。

在执行 JDBC 应用程序期间,驱动程序将针对当前连接的 DB2 数据库服务器验证 SQL 语句。

访问期间的任何问题都会作为 Java 异常与相应的 SQLSTATE 和 SQLCODE 一起报告给应用程序。

SQLJ:

SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。

SQLJ API 是在 SQL 1999 规范中定义的。

新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。

JDBC 和 SQLJ 可以在同一个应用程序中互 *** 作。

SQLJ 提供了独特的使用静态 SQL 语句进行开发以及在 DB2 包级别控制访问的能力。

/JDBC连接方式分析/

JDBC 驱动程序体系结构分为四种类型:Type1,Type2,Type3,Type4。

Type1:

驱动程序基于 JDBC-ODBC 桥。

因此 ODBC 驱动程序可以与此类 JDBC 驱动程序(由 Sun 提供)结合起来使用。

IBM 不支持 Type 1 驱动程序,因此它不是推荐的环境。

Type2:

驱动程序依靠特定于 *** 作系统的库(共享库)来与 RDBMS 通信。

应用程序将装入这种 JDBC 驱动程序,而驱动程序将使用共享库来与 DB2 服务器通信。

DB2 UDB for Linux, UNIX和 WindowsV81 提供了两种不同的 Type 2 驱动程序:

<1> 旧的/CLI JDBC 驱动程序在文件db2javazip中提供。

其实现包名称为COMibmdb2jdbcappDB2Driver。

该驱动程序目前已被用于进行 J2EE 认证。

其别名“app 驱动程序”源自于一种观念及其包名称,

这种观念就是:此驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。

<2> 通用 JDBC 驱动程序在文件db2jccjar中提供。

其实现包名称为comibmdb2jccDB2Driver。

此驱动程序是 DB2 UDB for Linux, UNIX 和 Windows V81 中的新功能。

在最初的实现(V81)中,此驱动程序用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 Java 连接。

在 DB2 V812 中,您可以在 Type 2 体系结构中使用此驱动程序。

在 Type 2 体系结构中使用此驱动程序的一个主要原因是为了本地应用程序性能和分布式事务支持。

通用 JDBC Type 2 驱动程序分别使用comibmdb2jccDB2XADataSource和comibmdb2jccDB2ConnectionPoolDataSource来支持分布式事务和连接池。 注:在将来的版本中不会对旧的/CLI Type 2 驱动程序进行增强。

Type3:

驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器(DB2 JDBC Applet Server)通信才能访问 DB2 数据。

此类驱动程序旨在使 Java applet 能访问 DB2 数据源。

常被称作“网络(net)驱动程序”,它是根据其包名COMibmdb2jdbcnet命名的。DB2 V81 支持网络驱动程序,可以将其用于 JDBC 应用程序。

要求db2javazip驱动程序总是处于与 DB2 Applet 服务器相同的维护级别。

如果驱动程序在 applet 内使用,这就不是一个问题,因为浏览器会在应用程序执行期间下载相应的db2javazip文件。

许多客户使用 Type3 驱动程序而不是 Type2 驱动程序,以避免必需的 DB2 客户机安装和必需的DB2 CATALOG DATABASE命令,后者用于创建使用旧的/CLI 驱动程序进行 Type 2 连接所必需的数据库目录信息。

目前,WebSphere Application Server 和其它 J2EE 服务器不支持 IBM Type 3 驱动程序,因为该驱动程序不支持分布式事务(JTA)。

将来的版本不会对 Type 3 驱动程序进行增强。

鼓励使用通用 JDBC Type 4 驱动程序来替代 Type 3 驱动程序。

Type4:

驱动程序是仅用于 Java 的 JDBC 驱动程序,它直接连接到数据库服务器。

DB2 UDB for Linux, UNIX 和 Windows V81 引入了称为“通用 JDBC 驱动程序(Universal JDBC driver)”的 Type 4 驱动程序。

通用 JDBC 驱动程序在文件db2jccjar中提供。

其实现包名为comibmdb2jccDB2Driver。

请注意,通用 Type 2 和通用 Type 4 驱动程序具有相同的实现类名称。

有两种方法可以区别 DB2 在内部将实例化哪个驱动程序:

使用连接特性来确定连接是否使用共享库(Type2),或者驱动程序是否会启动来自 Java 应用程序的直接连接(Type4)。

重要:就 DB2 UDB V812 而言,通用 JDBC 驱动程序要求 CLASSPATH 中有许可证 JAR 文件和db2jccjar文件。

以下是所需的许可证 JAR 文件:

Cloudscape Network Server V51:db2jcc_license_cjar

DB2 UDB V8 for Linux, UNIX 和 Windows 服务器:db2jcc_license_sujar

DB2 UDB for iSeries and z/OS 服务器(与 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供):db2jcc_license_cisuzjar 驱动程序类型:db2javazip, db2jccjar

注意:假如你使用db2javazip,且web服务器使用Tomcat的话,请将db2javazip改名为db2javajar,最好将zip解压再用jar命令打包,直接改文件类型也行(呵呵,按照jar文件严格意义上来讲这是不符合文法的<少了描述性文件:MANIFESTMF>,能用就行)

还有一般情况下:就是使用 db2javazip的话需要安装db2客户端, 使用db2jccjar是通过网络直接来连接的无需安装db2客户端(假如用在type2上还是要装客户端的)type2:

使用<db2javazip>:

jdbcdriverClassName=COMibmdb2jdbcappDB2Driver

jdbcurl=jdbc:db2:dataBaseName

假如你的工具使用的是myeclipse且使用的是tomcat plugin的话,请将db2jdbcdll 拷贝到 %JAVA_HOME%/bin下,否则不行地啦

<是不是其他类型的使用db2javazip驱动也有这个问题呢,不知道,没试过,有空试一下>

使用<db2jccjar>:

jdbcdriverClassName=comibmdb2jccDB2Driver

jdbcurl=jdbc:db2:dataBaseName

type3:

驱动:db2javazip

jdbcdriverClassName=COMibmdb2jdbcnetDB2Driver

jdbcurl=jdbc:db2://ip:6789/DBNAME

注意:要在数据库上执行 db2jstrt 6789 (这句启动了db2jd进程,6789是默认的服务器侦听jdbc2连接的端口,也可以设置成另外的任意不冲突的端口。)

type4:

驱动:db2jccjar

数据库字符集必须设置为utf-8

jdbcdriverClassName=comibmdb2jccDB2Driver

jdbcurl=jdbc:db2://ip:port/DBNAME

 Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。

SqlConnection类的对象连接SQL Server数据库;OracleConnection 类的对象连接Oracle数据库;

OleDbConnection类的对象连接支持OLE DB的数据库,如Access;而OdbcConnection类的对象连接任何支持ODBC的数据库。与数据库的所有通讯最终都是通过Connection对象来完成的。

SqlConnection类

 

 Connection 用于与数据库“对话”,并由特定提供程序的类(如

SqlConnection)表示。尽管SqlConnection类是针对Sql

Server的,但是这个类的许多属性、方法与事件和OleDbConnection及OdbcConnection等类相似。本章将重点讲解

SqlConnection特定的属性与方法,其他的Connection类你可以参考相应的帮助文档。

注意:使用不同的

Connection对象需要导入不同的命名空间。OleDbConnection的命名空间为SystemDataOleDb。

SqlConnection的命名空间为SystemDataSqlClient。OdbcConnection的命名空间为

SystemDataOdbc。OracleConnection的命名空间为SystemDataOracleClinet。

题主是否想询问“cs直连数据库出现风险怎么办”?

1、首先不要直接连接访问数据库,而是直接实现C/S。

2、其次在服务端写一个server程序,并用clienet发送socket请求给server。

3、最后由server访问本地数据库即可减少风险。

以上就是关于JAVA JDBC连接DB2数据库问题全部的内容,包括:JAVA JDBC连接DB2数据库问题、如何使用Connection对象连接数据库、cs直连数据库风险等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9874905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存