Necesitará usar el método executeUpdate() para ejecutar la declaración INSERT, mientras que necesitará usar el método executeQuery() para ejecutar la declaración SELECT. Esto se debe a los requisitos impuestos por la especificación JDBC sobre sus usos:
De la documentación de la API de Java para Declaración.executeQuery() :
y de la documentación de la API de Java para Declaración.ejecutarActualización() :
Su código (pseudocódigo publicado aquí) debería aparecer como:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
Y por supuesto, el La documentación de MySQL muestra cómo realizar la misma actividad para las columnas AUTO_INCREMENT , que aparentemente es lo que necesitas.
Si necesita ejecutar ambos juntos en la misma transacción, envíe las declaraciones en una cadena con un punto y coma separándolas de la siguiente manera:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
entonces necesitará usar el método execute(). Tenga en cuenta que esto depende del soporte ofrecido por la base de datos y el controlador JDBC para agrupar declaraciones en lotes en una sola ejecución(). Esto es compatible con Sybase y MSSQL Server, pero no creo que sea compatible con MySQL.