Du skal bruge executeUpdate()-metoden til at udføre INSERT-sætningen, mens du skal bruge executeQuery()-metoden til at udføre SELECT-sætningen. Dette skyldes de krav, som JDBC-specifikationen pålægger deres anvendelser:
Fra Java API-dokumentationen til Statement.executeQuery() :
og fra Java API-dokumentationen for Statement.executeUpdate() :
Din kode (pseudo-kode postet her) skal vises som:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
Og selvfølgelig, MySQL-dokumentation viser, hvordan man udfører den samme aktivitet for AUTO_INCREMENT-kolonner , hvilket åbenbart er hvad du har brug for.
Hvis du har brug for at udføre dem begge sammen i samme transaktion, ved at indsende erklæringerne i én streng med et semikolon, der adskiller dem som følgende:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
så skal du bruge execute() metoden. Bemærk, at dette afhænger af den understøttelse, der tilbydes af databasen og JDBC-driveren til at samle sætninger sammen i en enkelt execute(). Dette er understøttet i Sybase og MSSQL Server, men jeg tror ikke det er understøttet i MySQL.