Mysql
 sql >> Database >  >> RDS >> Mysql

Inserisci usando PreparedStatement. Come si incrementa automaticamente l'ID?

Lascia la colonna fuori da INSERT dichiarazione interamente . Sarà generato dal motore di database. La tua domanda dovrebbe essere:

INSERT INTO employee (time, name)
VALUES (?, ?)

In secondo luogo, devi prima eseguire l'inserimento, quindi estrarre le chiavi dal risultato.

Credo che il tuo codice dovrebbe essere:

PreparedStatement preparedStatement = 
    connect.prepareStatement("INSERT into employee (time, name) VALUES (?,?)", 
    Statement.RETURN_GENERATED_KEYS);

preparedStatement.setTimestamp(1, 
    new java.sql.Timestamp(new java.util.Date().getTime()));                           
preparedStatement.setString(2, "Test");

preparedStatement.executeUpdate();

ResultSet tableKeys = preparedStatement.getGeneratedKeys();
tableKeys.next();
int autoGeneratedID = tableKeys.getInt(1);

Si noti che questo esempio non verifica il successo dell'istruzione eseguita o l'esistenza delle chiavi restituite.