Du måste använda metoden executeUpdate() för att köra INSERT-satsen, medan du måste använda executeQuery()-metoden för att köra SELECT-satsen. Detta beror på de krav som JDBC-specifikationen ställer på deras användningsområden:
Från Java API-dokumentationen för Statement.executeQuery() :
och från Java API-dokumentationen för Statement.executeUpdate() :
Din kod (pseudokod publicerad här) ska visas som:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
Och naturligtvis, MySQL-dokumentationen visar hur man utför samma aktivitet för AUTO_INCREMENT-kolumner , vilket tydligen är vad du behöver.
Om du behöver köra båda tillsammans i samma transaktion, genom att skicka in satserna i en sträng med ett semikolon som skiljer dem åt på följande sätt:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
då måste du använda metoden execute(). Observera att detta beror på det stöd som erbjuds av databasen och JDBC-drivrutinen för att batcha-satser tillsammans i en enda execute(). Detta stöds i Sybase och MSSQL Server, men jag tror inte att det stöds i MySQL.