运行报Operation not allowed after ResultSet closed错误

try {
long a = System.currentTimeMillis();
con = JdbcUtils_C3P0.getConnection();
String sql = "Select * from al1688shopmessageurl01 where num ";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
int row = rs.getRow();
while (rs.next()) {
if (row % 100 == 0) {
StringBuffer str = new StringBuffer(
"insert into ali_goods_basic_info(UUID,NAME,URL,COMPANY_NAME,KEYWORD) values");

                str.append("('" + rs.getString("uuid") + "'," + "'" + rs.getString("title") + "'," + "'"
                        + rs.getString("url") + "'," + "'" + rs.getString("name") + "'," + "'"
                        + rs.getString("keywords") + "')");
                ps.executeUpdate(str.toString());
                //con.commit();
                System.out.println("ok");

            }

        }

        if (rs != null) {
            rs.close();
        }
        if (ps != null) {
            ps.close();
        }
        if (con != null) {
            con.close();
        }
        System.out.println("插入操作完成");
        System.out.println("\r<br>执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
    } catch (SQLException e) {
        e.printStackTrace();
    }

ps.executeUpdate(str.toString());
一个ps多个rs进行操作.
不能互相交替使用,会引起rs已经关闭错误.
你可以用两个独立的ps对象

让一个Statement对应一个ResultSet,操作完成后及时释放ResultSet和Statement