日期:2014-05-20  浏览次数:20768 次

JDBC执行SQL语句后的问题。
我按照下面的操作
1.打开数据库。
2.执行SQL语句,获得ResultSet。
3.关闭数据库。
那么,这个ResultSet还能使用吗?还能进行遍历吗?

简单代码如下:
if (this.connection == null)
{
  this.connection = DriverManager.getConnection(this.connectionString, this.connectionName, this.connectionPassword);
}

if (this.preparedStatement != null)
{
  this.preparedStatement.close();
  this.preparedStatement = null;
}
this.preparedStatement = connection.prepareStatement(sql);

ResultSet resultSet = this.preparedStatement.executeQuery();

if (this.connection != null)
{
  this.connection.close();
  this.connection = null;
}

resultSet.next();

------解决方案--------------------
关闭连接后resultSet不可用了,用CachedRowSet替代即可!
------解决方案--------------------
if (this.connection == null) 

this.connection = DriverManager.getConnection(this.connectionString, this.connectionName, this.connectionPassword); 


if (this.preparedStatement != null) 

this.preparedStatement.close(); 
this.preparedStatement = null; 

this.preparedStatement = connection.prepareStatement(sql); 

ResultSet resultSet = this.preparedStatement.executeQuery(); 

if (this.connection != null) 

this.connection.close(); 
this.connection = null; 


resultSet.next();

干嘛这样写 

这样在resultSet.next();前已经关闭了

不行的
------解决方案--------------------
this.connection.close();

resultSet.next();

连接关闭后,ResultSet就不可以用了
------解决方案--------------------
resultSet.next();
把这段程序执行结束后再关闭;
楼上说的都对`
------解决方案--------------------
不能遍历了...
------解决方案--------------------
绝对不能用了