sql >> Database >  >> RDS >> Mysql

JDBC- kan de waarde niet ophalen en de tabel in de mysql-database verwijderen

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:

  1. eerste INSERT
  2. tweede INSERT
  3. eerste SELECT
  4. 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);
}


  1. MySQL select-instructie met alias mislukt met kolom niet gevonden

  2. Hoe de MySQL-engine voor tijdelijke tabelopslag te vinden?

  3. Hoe records willekeurig uit de Oracle-database te halen?

  4. ODP.NET beheerd - Kan de gevraagde .Net Framework-gegevensprovider niet vinden