Sarà necessario utilizzare il metodo executeUpdate() per eseguire l'istruzione INSERT, mentre sarà necessario utilizzare il metodo executeQuery() per eseguire l'istruzione SELECT. Ciò è dovuto ai requisiti imposti dalla specifica JDBC sui loro utilizzi:
Dalla documentazione dell'API Java per Statement.executeQuery() :
e dalla documentazione dell'API Java per Statement.executeUpdate() :
Il tuo codice (pseudo-codice pubblicato qui) dovrebbe apparire come:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
E, naturalmente, il La documentazione MySQL mostra come eseguire la stessa attività per le colonne AUTO_INCREMENT , che a quanto pare è ciò di cui hai bisogno.
Se è necessario eseguirli entrambi insieme nella stessa transazione, inviando le istruzioni in una stringa con un punto e virgola che le separa come segue:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
quindi dovrai usare il metodo execute(). Si noti che ciò dipende dal supporto offerto dal database e dal driver JDBC per il batch di istruzioni insieme in un'unica esecuzione(). Questo è supportato in Sybase e MSSQL Server, ma non credo che sia supportato in MySQL.