Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This could be caused by a number of reasons, including the driver you are using.</p> <p>a) Some drivers do not allow nested statements. Depending if your driver supports JDBC 3.0 you should check the third parameter when creating the Statement object. For instance, I had the same problem with the JayBird driver to Firebird, but the code worked fine with the postgres driver. Then I added the third parameter to the createStatement method call and set it to ResultSet.HOLD_CURSORS_OVER_COMMIT, and the code started working fine for Firebird too. </p> <pre><code>static void testNestedRS() throws SQLException { Connection con =null; try { // GET A CONNECTION con = ConexionDesdeArchivo.obtenerConexion("examen-dest"); String sql1 = "select * from reportes_clasificacion"; Statement st1 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT); ResultSet rs1 = null; try { // EXECUTE THE FIRST QRY rs1 = st1.executeQuery(sql1); while (rs1.next()) { // THIS LINE WILL BE PRINTED JUST ONCE ON // SOME DRIVERS UNLESS YOU CREATE THE STATEMENT // WITH 3 PARAMETERS USING // ResultSet.HOLD_CURSORS_OVER_COMMIT System.out.println("ST1 Row #: " + rs1.getRow()); String sql2 = "select * from reportes"; Statement st2 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); // EXECUTE THE SECOND QRY. THIS CLOSES THE FIRST // ResultSet ON SOME DRIVERS WITHOUT USING // ResultSet.HOLD_CURSORS_OVER_COMMIT st2.executeQuery(sql2); st2.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { rs1.close(); st1.close(); } } catch (SQLException e) { } finally { con.close(); } } </code></pre> <p>b) There could be a bug in your code. Remember that you cannot reuse the Statement object, once you re-execute a query on the same statement object, all the opened resultsets associated with the statement are closed. Make sure you are not closing the statement.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload