Mysql
 sql >> Database >  >> RDS >> Mysql

JDBC- non può recuperare il valore ed eliminare la tabella nel database mysql

Sono consapevole che stai facendo qualcosa di diverso, ma alcuni piccoli suggerimenti per gli inserti:

Java ha un modo indipendente dal database per recuperare le chiavi generate di un INSERT. È molto più sicuro che prendere il MAX dopo o prima, in un ambiente multiutente.

Scenario per ID errati:

  1. primo INSERTO
  2. secondo INSERTO
  3. prima SELEZIONA
  4. secondo SELEZIONA

Usa anche PreparedStatement, per la sicurezza (SQL injection) e l'escape (se il nome contiene virgolette singole o backslash o giù di lì).

E try-withresources chiude sempre le cose, anche in caso di restituzione o eccezione.

String sql = "INSERT INTO account (name, balance) VALUES (?, 0)";
try (PreparedStatement stmt = conn.prepareStatement(sql,
        Statement.RETURN_GENERATED_KEYS)) {
    stmt.setString(1, name);
    int updateCount = stmt.executeUpdate(); // 1
    try (ResultSet id = stmt.getGeneratedKeys()) {
        id_user = 0;
        if (id.next()) { // 'if' as just 1 row inserted.
            id_user = id.getInt(1); // 1 key per row.
        }
    }
    System.out.println(id_user);
}