我创建了两个连接,一个连接是另外一台机器上的,一个连接是我本地,然后从另一个机器上查询结果,存在resultset中,然后每查到一条符合条件的条目,我就插入到我机器上的另一个数据库中, 这个时候resultset是开着的,因为插入这条语句后,我还要继续从resultset中读数据,所以有这个异常:Streaming result set com.mysql.jdbc.RowDataDynamic@30c221 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.为什么我用的是不同的机器上的不同的数据库,还会有这种冲突呢?有没有什么好点的解决办法,除了先把结果存下来,然后等查找完了,关掉rs再插。和多线程有关系吗,我这个是一个线程。谢谢。
Connection sourceConn = null;
Connection targetConn = null;
try {
sourceConn = DriverManager.getConnection("", "", "");
targetConn = DriverManager.getConnection("", "", ""); Statement sourceStmt = sourceConn.createStatement();
try {
String insertSql = "insert into student(num, name) values(?, ?)";
PreparedStatement targetStmt = sourceConn.prepareStatement(insertSql);
try {
String querySql = "select num, name from Student";
ResultSet sourceRS = sourceStmt.executeQuery(querySql);
while (sourceRS.next()) {
targetStmt.setString(1, sourceRS.getString(1));
targetStmt.setString(2, sourceRS.getString(2));
targetStmt.executeUpdate();
}
} finally {
targetStmt.close();
}
} finally {
sourceStmt.close();
}
} finally {
if (sourceConn != null)
sourceConn.close();
if (targetConn != null)
targetConn.close();
}
}