问题:java使用db2jcc.jar和db2jcc_license_cu.jar驱动连接DB2数据库,在程序中抛如下异常:
com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] 操作无效:已关闭 result set。
at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
at com.ibm.db2.jcc.c.wf.c(wf.java:247)
at com.ibm.db2.jcc.c.wf.next(wf.java:234)
第一次接触DB2,痛苦万分。。。
对上面的异常我表示很不可思议,反复检查代码,发现在抛出该异常之前并为关闭resultset。俗话说内事不决找baidu,外事不决找google,于是,我在2大搜索引擎上折腾许久,没有对口的。
没办法了,只能自力更生了,我猜是不是DB2自动关闭的。
于是写了几行代码测试了一下,如下:
int j = 1;
boolean eof;
while(rs != null){
eof = rs.next();
if(eof){
System.out.println(j);
j++;
} else {
System.out.println("======================== null");
}
}
运行结果如下:
======================== null
com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] 操作无效:已关闭 result set。
at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
at com.ibm.db2.jcc.c.wf.c(wf.java:247)
at com.ibm.db2.jcc.c.wf.next(wf.java:234)
果然,当rs.next()读出来是null时,DB2将resultSet关闭了,再执行rs.next()就会抛出已关闭异常。。。
当我把数据库连接换成oracle时,当读出来是null时,不关闭resultSet,只会一直打印======================== null
关于DB2自动关闭resultSet只是我的猜测,暂未找到理论依据,我也没有去ibm官网求证(英文伤不起)。
总结:一直觉得自己在解决问题上的能力比较薄弱,碰到问题通常“一查二问三猜”—去网上查相关资料,问身边的朋友,自己写个代码瞎猜,再就没辙了。。。
希望无所不能的大虾们不吝赐教,多谢!
分享到:
相关推荐
在本例中,"JDBC连接db2数据库.zip"是一个压缩包,包含了连接IBM DB2数据库所需的JDBC驱动。 DB2是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级应用,支持多种操作系统平台,如Windows、Linux、Unix和...
JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的应用程序接口。它定义了Java应用程序如何与数据库之间通信,允许用户执行SQL语句并获取结果。对于初学者来说,理解JDBC连接数据库的基本步骤...
**JDBC连接数据库经验总结** Java Database Connectivity (JDBC) 是Java编程语言中用于与关系数据库交互的标准API。它提供了一种规范,使得Java开发者能够使用标准的Java语句来执行SQL命令,从而实现对数据库的操作...
综上所述,JDBC连接数据库主要包括加载驱动、建立连接、执行SQL和关闭连接四个步骤。通过封装这些操作在类中,可以方便地在应用程序中复用。在实际开发中,还需要根据具体需求对异常处理、事务管理等方面进行优化和...
"常用的jdbc连接数据库架包jar"指的是包含不同数据库驱动的Java类库,这些驱动使得Java程序能够通过JDBC API与Oracle、DB2、SQLServer和MySQL等主流数据库建立连接。下面我们将详细探讨这些数据库以及它们对应的JDBC...
在Java编程中,Java数据库连接(JDBC)是与各种数据库进行交互的标准API。它允许开发者使用Java语言编写数据库应用程序,而无需关心底层数据库的具体实现。JDBC通过一系列的类和接口来提供这种通用性,使得数据库...
"JDBC 连接数据库" JDBC(Java Database Connectivity)是一种Java API,用于连接数据库,并执行 SQL 语句以访问和操作数据库中的数据。JDBC API 由java.sql包提供,包括了 Connection、Statement、ResultSet 等...
JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种API。它提供了一种标准的方式来访问和操作数据库,使得开发人员无需关心具体的数据库实现细节,就能执行SQL语句并处理结果。JDBC...
JDBC(Java Database Connectivity)是一种Java API,用于连接和执行查询数据库。本章主要针对如何使用JDBC连接Oracle数据库,提供了详细步骤说明,适用于教学及实际开发中的应用。JDBC允许Java程序执行SQL语句,...
### 通过JDBC使用Java连接DB2数据库的关键知识点 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成...
Java中JDBC连接数据库详解 Java中JDBC连接数据库详解是指Java程序使用JDBC(Java Database Connectivity)来连接和操作数据库的过程。JDBC是一种Java API,用于连接和操作数据库,它提供了一套标准化的接口,允许...
连接DB2数据库的基本步骤包括:加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集、关闭资源。例如: ```java import java.sql.*; public class DB2ConnectionExample { ...
### 完整Java开发中JDBC连接数据库代码和步骤 #### 一、概述 在Java开发过程中,通过Java Database Connectivity (JDBC) 连接数据库是非常常见的一种操作方式。JDBC提供了一组标准的API,使得Java应用程序可以访问...
本篇文章将深入探讨如何使用JDBC连接PG数据库,以及实现数据的增删改查操作。 首先,我们需要了解JDBC的基本概念。JDBC是Java程序访问数据库的一组接口和类,它允许开发者使用SQL语句来操作数据库。JDBC提供了一个...
DB2 JDBC 通过客户端连接DB2是数据库管理中常见的操作,尤其在Java开发环境中。JDBC(Java Database Connectivity)是Java编程语言与各种数据库交互的标准接口。本篇将深入探讨如何利用DB2 JDBC驱动程序建立从Java...
总的来说,"DB2jdbc-4.23.42.zip" 提供了与DB2数据库交互的必要工具,让Java开发者能够轻松地进行数据操作、事务管理和性能优化。了解并熟练掌握DB2 JDBC驱动的使用,对于任何需要与DB2数据库打交道的Java应用都是至...
### Java JDBC连接数据库代码大全详解 #### 一、JDBC基础概述 JDBC(Java Database Connectivity)是一种标准的Java API,允许Java程序连接并操作各种类型的数据库。它为开发人员提供了一种统一的方式,以便使用...
在实际开发过程中,我们经常需要连接到不同的数据库系统(如 Microsoft SQL Server、Oracle、MySQL、Sybase、DB2 和 Access 等),因此掌握如何通过 JDBC 连接到这些不同的数据库是非常重要的。 #### 二、JDBC 连接...