Uvědomuji si, že děláte něco jiného, ale několik malých tipů pro vložky:
Java má na databázi nezávislý způsob, jak získat vygenerované klíče INSERTu. To je mnohem bezpečnější než vzít MAX poté nebo předtím v prostředí pro více uživatelů.
Scénář pro nesprávná ID:
- první INSERT
- druhé INSERT
- nejprve SELECT
- druhý SELECT
Pro zabezpečení (vložení SQL) a escapování použijte také PreparedStatement (pokud název obsahuje jednoduché uvozovky nebo zpětné lomítko).
A try-withresources vždy věci uzavírá, dokonce i při návratu nebo výjimce.
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);
}