Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einfügen mit PreparedStatement. Wie erhöhe ich die ID automatisch?

Lassen Sie die Spalte außerhalb des INSERT Aussage vollständig . Es wird von der Datenbank-Engine generiert. Ihre Abfrage sollte lauten:

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

Zweitens müssen Sie zuerst die Einfügung durchführen und dann die Schlüssel aus dem Ergebnis holen.

Ich glaube, Ihr Code sollte sein:

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

Beachten Sie, dass dieses Beispiel nicht den Erfolg der ausgeführten Anweisung oder das Vorhandensein zurückgegebener Schlüssel überprüft.