sql >> Database >  >> RDS >> Mysql

Invoegen met behulp van PreparedStatement. Hoe kan ik de ID automatisch verhogen?

Laat de kolom buiten de INSERT verklaring helemaal . Het wordt gegenereerd door de database-engine. Uw vraag zou moeten zijn:

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

Ten tweede moet je eerst het invoegen uitvoeren en dan de sleutels uit het resultaat halen.

Ik denk dat je code zou moeten zijn:

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

Merk op dat dit voorbeeld niet het succes van de uitgevoerde instructie of het bestaan ​​van geretourneerde sleutels controleert.



  1. Krijg polygonen dicht bij een lat,long in MySQL

  2. Django:Groep per maand zoeken

  3. Toepassingsmachtigingen opslaan in een database

  4. Veld 'id' heeft geen standaardwaarde?