我创建了两个连接,一个连接是另外一台机器上的,一个连接是我本地,然后从另一个机器上查询结果,存在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再插。和多线程有关系吗,我这个是一个线程。谢谢。

解决方案 »

  1.   

    一行代码都都没有,怎么帮你呀?给个示例代码,你自己改吧改吧,就可以了  public static void main(String[] args) throws Exception {
            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();
            }
        }