Наясно съм, че правите нещо различно, но някои малки съвети за вмъквания:
Java има независим от базата данни начин за извличане на генерираните ключове на INSERT. Това е много по-безопасно от вземането на MAX след или преди това в среда с много потребители.
Сценарий за грешни идентификатори:
- първи INSERT
- второ INSERT
- първо ИЗБЕРЕТЕ
- втори ИЗБОР
Използвайте също PreparedStatement за сигурност (SQL инжектиране) и екраниране (ако името съдържа единични кавички или обратна наклонена черта или т.н.
А try-withresources винаги затваря нещата, дори при връщане или изключение.
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);
}