Mysql
 sql >> Base de données >  >> RDS >> Mysql

JDBC - impossible de récupérer la valeur et de supprimer la table dans la base de données mysql

Je sais que vous faites quelque chose de différent, mais quelques petits conseils pour les insertions :

Java dispose d'un moyen indépendant de la base de données pour récupérer les clés générées d'un INSERT. C'est beaucoup plus sûr que de prendre le MAX après ou avant, dans un environnement multi-utilisateurs.

Scénario pour les ID erronés :

  1. premier INSERT
  2. deuxième INSERT
  3. premier SELECT
  4. deuxième SELECT

Utilisez également un PreparedStatement, pour la sécurité (injection SQL) et l'échappement (si le nom contient un guillemet simple ou une barre oblique inverse ou autre.

Et try-withresources ferme toujours les choses, même en cas de retour ou d'exception.

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);
}