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

Indsæt ved hjælp af PreparedStatement. Hvordan øger jeg id'et automatisk?

Lad kolonnen ude af INSERT erklæring helt . Det vil blive genereret af databasemotoren. Din forespørgsel skal være:

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

For det andet skal du først udføre indsættelsen og derefter få nøglerne ud af resultatet.

Jeg mener, at din kode skal være:

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

Bemærk, at dette eksempel ikke kontrollerer succesen af ​​den udførte sætning eller eksistensen af ​​returnerede nøgler.



  1. Sådan deaktiveres alle triggere i SQL Server-databasen

  2. SQLAlchemy/MySQL Mistet forbindelse til MySQL-server under forespørgsel

  3. Bedste måde at køre Oracle-forespørgsler med jævne mellemrum

  4. Magicbricks migrerer til MariaDB for at understøtte dets højvolumentrafik