Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JDBC- kann Wert nicht abrufen und Tabelle in MySQL-Datenbank löschen

Mir ist bewusst, dass Sie etwas anderes machen, aber einige kleine Tipps für Einfügungen:

Java hat einen datenbankunabhängigen Weg, um die generierten Schlüssel eines INSERT abzurufen. Das ist viel sicherer, als in einer Umgebung mit mehreren Benutzern den MAX danach oder vorher zu nehmen.

Szenario für falsche IDs:

  1. erstes EINFÜGEN
  2. zweite EINFÜGE
  3. zuerst AUSWÄHLEN
  4. zweites AUSWÄHLEN

Verwenden Sie auch ein PreparedStatement aus Sicherheitsgründen (SQL-Injection) und Escapezeichen (wenn der Name ein einfaches Anführungszeichen oder einen umgekehrten Schrägstrich usw. enthält.

Und try-withresources schließt Dinge immer, auch bei Rückkehr oder Ausnahme.

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