Ще трябва да използвате метода executeUpdate(), за да изпълните оператора INSERT, докато ще трябва да използвате метода executeQuery(), за да изпълните оператора SELECT. Това се дължи на изискванията, наложени от спецификацията на JDBC за тяхното използване:
От документацията на Java API за Statement.executeQuery() :
и от документацията на Java API за Statement.executeUpdate() :
Вашият код (псевдокод, публикуван тук) трябва да изглежда като:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
И разбира се, Документацията на MySQL демонстрира как да извършите същата дейност за AUTO_INCREMENT колони , което очевидно е това, от което се нуждаете.
Ако трябва да изпълните и двете заедно в една и съща транзакция, като изпратите изявленията в един низ с точка и запетая, разделяща ги както следва:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
тогава ще трябва да използвате метода execute(). Имайте предвид, че това зависи от поддръжката, предлагана от базата данни и JDBC драйвера за групиране на оператори заедно в едно изпълнение(). Това се поддържа в Sybase и MSSQL Server, но не мисля, че се поддържа в MySQL.