K provedení příkazu INSERT budete muset použít metodu executeUpdate(), zatímco k provedení příkazu SELECT budete muset použít metodu executeQuery(). To je způsobeno požadavky kladenými specifikací JDBC na jejich použití:
Z dokumentace Java API pro Statement.executeQuery() :
a z dokumentace Java API pro Statement.executeUpdate() :
Váš kód (pseudokód zveřejněný zde) by měl vypadat takto:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
A samozřejmě Dokumentace MySQL ukazuje, jak provést stejnou aktivitu pro sloupce AUTO_INCREMENT , což je zřejmě to, co potřebujete.
Pokud je potřebujete provést oba společně ve stejné transakci, odešlete příkazy v jednom řetězci se středníkem, který je odděluje takto:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
pak budete muset použít metodu execute(). Všimněte si, že to závisí na podpoře nabízené databází a ovladačem JDBC pro dávkové podávání příkazů dohromady v rámci jednoho execute(). Toto je podporováno v Sybase a MSSQL Server, ale nemyslím si, že je podporováno v MySQL.