@Override
 public boolean rowUpdated() throws SQLException {
   try {
     return _res.rowUpdated();
   } catch (SQLException e) {
     handleException(e);
     return false;
   }
 }
	public boolean rowUpdated() throws SQLException {
		return rs.rowUpdated();
	}
  private void testUpdateDeleteInsert() throws SQLException {
    Connection c1 = getConnection();
    Connection c2 = getConnection();
    Statement stat = c1.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    stat.execute("DROP TABLE IF EXISTS TEST");
    stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))");
    int max = 8;
    for (int i = 0; i < max; i++) {
      stat.execute("INSERT INTO TEST VALUES(" + i + ", 'Hello" + i + "')");
    }
    ResultSet rs;
    rs = stat.executeQuery("SELECT * FROM TEST ORDER BY ID");
    rs.next();
    assertEquals(0, rs.getInt(1));
    rs.moveToInsertRow();
    rs.updateInt(1, 100);
    rs.moveToCurrentRow();
    assertEquals(0, rs.getInt(1));

    rs = stat.executeQuery("SELECT * FROM TEST");
    int j = max;
    while (rs.next()) {
      int id = rs.getInt(1);
      if (id % 2 == 0) {
        Statement s2 = c2.createStatement();
        s2.execute("UPDATE TEST SET NAME = NAME || '+' WHERE ID = " + rs.getInt(1));
        if (id % 4 == 0) {
          rs.refreshRow();
        }
        rs.updateString(2, "Updated " + rs.getString(2));
        rs.updateRow();
      } else {
        rs.deleteRow();
      }
      // the driver does not detect it in any case
      assertFalse(rs.rowUpdated());
      assertFalse(rs.rowInserted());
      assertFalse(rs.rowDeleted());

      rs.moveToInsertRow();
      rs.updateString(2, "Inserted " + j);
      rs.updateInt(1, j);
      j += 2;
      rs.insertRow();

      // the driver does not detect it in any case
      assertFalse(rs.rowUpdated());
      assertFalse(rs.rowInserted());
      assertFalse(rs.rowDeleted());
    }
    rs = stat.executeQuery("SELECT * FROM TEST ORDER BY ID");
    while (rs.next()) {
      int id = rs.getInt(1);
      String name = rs.getString(2);
      assertEquals(0, id % 2);
      if (id >= max) {
        assertEquals("Inserted " + id, rs.getString(2));
      } else {
        if (id % 4 == 0) {
          assertEquals("Updated Hello" + id + "+", rs.getString(2));
        } else {
          assertEquals("Updated Hello" + id, rs.getString(2));
        }
      }
      trace("id=" + id + " name=" + name);
    }
    c2.close();
    c1.close();

    // test scrollable result sets
    Connection conn = getConnection();
    for (int i = 0; i < 5; i++) {
      testScrollable(conn, i);
    }
    conn.close();
  }