Você precisará usar o método executeUpdate() para executar a instrução INSERT, enquanto você precisará usar o método executeQuery() para executar a instrução SELECT. Isso se deve aos requisitos impostos pela especificação JDBC em seus usos:
Na documentação da API Java para Instrução.executeQuery() :
e da documentação da API Java para Statement.executeUpdate() :
Seu código (pseudo-código postado aqui) deve aparecer como:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
E, claro, o A documentação do MySQL demonstra como realizar a mesma atividade para colunas AUTO_INCREMENT , que aparentemente é o que você precisa.
Se você precisar executar os dois juntos na mesma transação, enviando as instruções em uma string com um ponto e vírgula separando-as da seguinte forma:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
então você precisará usar o método execute(). Observe que isso depende do suporte oferecido pelo banco de dados e pelo driver JDBC para agrupar instruções em lote em um único execute(). Isso é suportado no Sybase e no MSSQL Server, mas não acho que seja suportado no MySQL.