sql >> Base de Datos >  >> RDS >> Mysql

JDBC:no se puede recuperar el valor y eliminar la tabla en la base de datos mysql

Soy consciente de que está haciendo algo diferente, pero algunos pequeños consejos para las inserciones:

Java tiene una forma independiente de la base de datos para obtener las claves generadas de un INSERT. Eso es mucho más seguro que tomar el MAX después o antes, en un entorno multiusuario.

Escenario para identificaciones incorrectas:

  1. primer INSERTO
  2. segundo INSERTAR
  3. primero SELECCIONAR
  4. segundo SELECCIONAR

También use una declaración preparada, por seguridad (inyección de SQL) y escape (si el nombre contiene comillas simples o una barra invertida o algo así).

Y try-withresources siempre cierra las cosas, incluso en devolución o excepción.

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);
}