@Override
 public boolean rowDeleted() throws SQLException {
   try {
     return _res.rowDeleted();
   } catch (SQLException e) {
     handleException(e);
     return false;
   }
 }
Ejemplo n.º 2
0
  @Override
  public DbPathEntry rsToPathEntry(ResultSet rs, String prefix)
      throws SQLException, InterruptedException {
    if (rs == null) {
      return null;
    }
    try {
      if (rs.rowDeleted()) {
        return null;
      }
    } catch (SQLFeatureNotSupportedException e) {
    }

    long newpathid = rs.getLong(prefix + "pathid");
    long newparentid = rs.getLong(prefix + "parentid");
    long newrootid = rs.getLong(prefix + "rootid");
    if (rs.wasNull()) {
      newrootid = newpathid;
    }

    String newpath = rs.getString(prefix + "path");
    if (rs.wasNull()) {
      return null;
    }

    int newtype = rs.getInt(prefix + "type");

    DbPathEntry result = new DbPathEntry(newpath, newtype, newpathid, newparentid, newrootid);

    String t = rs.getString(prefix + "datelastmodified");
    if (t == null) {
      result.setDateLastModified(0);
    } else {
      Date d;
      try {
        d = sdf.parse(t);
        result.setDateLastModified(d.getTime());
      } catch (ParseException e) {
        result.setDateLastModified(0);
      }
    }

    result.setSize(rs.getLong(prefix + "size"));
    result.setCompressedSize(rs.getLong(prefix + "compressedsize"));

    int newcsum = rs.getInt(prefix + "csum");
    if (!rs.wasNull()) {
      result.setCsum(newcsum);
    }

    result.setStatus(rs.getInt(prefix + "status"));

    return result;
  }
 /**
  * General test of scrollable cursor functionality.
  *
  * <p>When running on SQL Server this test will exercise MSCursorResultSet. When running on Sybase
  * this test will exercise CachedResultSet.
  */
 public void testCachedCursor() throws Exception {
   try {
     dropTable("jTDS_CachedCursorTest");
     Statement stmt = con.createStatement();
     stmt.execute(
         "CREATE TABLE jTDS_CachedCursorTest "
             + "(key1 int NOT NULL, key2 char(4) NOT NULL,"
             + "data varchar(255))\r\n"
             + "ALTER TABLE jTDS_CachedCursorTest "
             + "ADD CONSTRAINT PK_jTDS_CachedCursorTest PRIMARY KEY CLUSTERED"
             + "( key1, key2)");
     for (int i = 1; i <= 16; i++) {
       assertEquals(
           1,
           stmt.executeUpdate(
               "INSERT INTO jTDS_CachedCursorTest VALUES(" + i + ", 'XXXX','LINE " + i + "')"));
     }
     stmt.close();
     stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
     ResultSet rs = stmt.executeQuery("SELECT * FROM jTDS_CachedCursorTest ORDER BY key1");
     assertNotNull(rs);
     assertEquals(null, stmt.getWarnings());
     assertTrue(rs.isBeforeFirst());
     assertTrue(rs.first());
     assertEquals(1, rs.getInt(1));
     assertTrue(rs.isFirst());
     assertTrue(rs.last());
     assertEquals(16, rs.getInt(1));
     assertTrue(rs.isLast());
     assertFalse(rs.next());
     assertTrue(rs.isAfterLast());
     rs.beforeFirst();
     assertTrue(rs.next());
     assertEquals(1, rs.getInt(1));
     rs.afterLast();
     assertTrue(rs.previous());
     assertEquals(16, rs.getInt(1));
     assertTrue(rs.absolute(8));
     assertEquals(8, rs.getInt(1));
     assertTrue(rs.relative(-1));
     assertEquals(7, rs.getInt(1));
     rs.updateString(3, "New line 7");
     rs.updateRow();
     //            assertTrue(rs.rowUpdated()); // MS API cursors appear not to support this
     rs.moveToInsertRow();
     rs.updateInt(1, 17);
     rs.updateString(2, "XXXX");
     rs.updateString(3, "LINE 17");
     rs.insertRow();
     rs.moveToCurrentRow();
     rs.last();
     //            assertTrue(rs.rowInserted()); // MS API cursors appear not to support this
     Statement stmt2 =
         con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
     ResultSet rs2 = stmt2.executeQuery("SELECT * FROM jTDS_CachedCursorTest ORDER BY key1");
     rs.updateString(3, "NEW LINE 17");
     rs.updateRow();
     assertTrue(rs2.last());
     assertEquals(17, rs2.getInt(1));
     assertEquals("NEW LINE 17", rs2.getString(3));
     rs.deleteRow();
     rs2.refreshRow();
     assertTrue(rs2.rowDeleted());
     rs2.close();
     stmt2.close();
     rs.close();
     stmt.close();
   } finally {
     dropTable("jTDS_CachedCursorTest");
   }
 }
Ejemplo n.º 4
0
	public boolean rowDeleted() throws SQLException {
		return rs.rowDeleted();
	}
  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();
  }