Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JDBC- não é possível recuperar o valor e excluir a tabela no banco de dados mysql


Estou ciente de que você está fazendo algo diferente, mas algumas pequenas dicas para inserções:

Java tem uma forma independente de banco de dados para buscar as chaves geradas de um INSERT. Isso é muito mais seguro do que pegar o MAX depois ou antes, em um ambiente multiusuário.

Cenário para IDs errados:
  1. primeira INSERÇÃO
  2. segundo INSERT
  3. primeiro SELECT
  4. segundo SELECT

Use também um PreparedStatement, para segurança (injeção de SQL) e escape (se o nome contiver aspas simples ou barra invertida ou algo assim.

E try-withresources sempre fecha as coisas, mesmo no retorno ou exceção.
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);
}