Ik ben me ervan bewust dat je iets anders doet, maar enkele kleine tips voor invoegingen:
Java heeft een database-onafhankelijke manier om de gegenereerde sleutels van een INSERT op te halen. Dat is een stuk veiliger dan de MAX achteraf of ervoor te nemen, in een omgeving met meerdere gebruikers.
Scenario voor verkeerde ID's:
- eerste INSERT
- tweede INSERT
- eerste SELECT
- tweede SELECT
Gebruik ook een PreparedStatement, voor beveiliging (SQL-injectie) en escaping (als de naam een enkel aanhalingsteken of een backslash of zo bevat.
En try-withresources sluit altijd dingen, zelfs bij terugkeer of uitzondering.
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);
}