Jag är medveten om att du gör något annorlunda, men några små tips för inlägg:
Java har ett databasoberoende sätt att hämta de genererade nycklarna för en INSERT. Det är mycket säkrare än att ta MAX efteråt eller innan, i en miljö med flera användare.
Scenario för fel ID:n:
- första INSERT
- andra INSERT
- första SELECT
- andra SELECT
Använd också en PreparedStatement för säkerhet (SQL-injektion) och escape (om namnet innehåller ett citattecken eller omvänt snedstreck eller så.
Och försök med resurser stänger alltid saker, även vid retur eller undantag.
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);
}