sql >> Database >  >> RDS >> PostgreSQL

selecteren voor update met JDBC?

Je voegt eerst for update toe naar uw select (en uw andere kolommen die u wilt bijwerken), en vervolgens werkt u ze bij. Zorg er ook, zoals vermeld in de opmerkingen, voor dat uw getConnection retourneert een Connection zonder automatische incasso. En je moet een Statement instellen type om te scrollen en CONCUR_UPDATABLE . Iets als,

String[] colNames = { "email", "already_linked", "account_link_timestamp" };
String query = "select " + Stream.of(colNames).collect(Collectors.joining(", "))
        + "from email_accounts where already_linked = false for update";
try (Connection conn = getConnection(); // Make sure conn.setAutoCommit(false);
        Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
                ResultSet.CONCUR_UPDATABLE);
        ResultSet rs = stmt.executeQuery(query)) {
    while (rs.next()) {
        // Get the current values, if you need them.
        String email = rs.getString(colNames[0]);
        boolean linked = rs.getBoolean(colNames[1]);
        Timestamp time = rs.getTimestamp(colNames[2]);
        // ...
        rs.updateBoolean(colNames[1], true);
        rs.updateTimestamp(colNames[2], //
                new Timestamp(System.currentTimeMillis()));
        rs.updateRow();
    }
} catch (SQLException e) {
    e.printStackTrace();
}



  1. Hoe de tabelwaardeparameter te WIJZIGEN

  2. hoe meer dan één afbeelding naar de server (mysql-database) te uploaden met php en android

  3. Gebruik parameter in functie doorgegeven aan google.setOnLoadCallback();

  4. Leg gedrag uit bij het in kaart brengen van automatisch geïncrementeerde samengestelde id-reeksen met Hibernate