U moet de methode executeUpdate() gebruiken om de INSERT-instructie uit te voeren, terwijl u de methode executeQuery() moet gebruiken om de SELECT-instructie uit te voeren. Dit komt door de eisen die de JDBC-specificatie aan hun gebruik stelt:
Uit de Java API-documentatie voor Statement.executeQuery() :
en uit de Java API-documentatie voor Statement.executeUpdate() :
Uw code (pseudo-code hier gepost) zou moeten verschijnen als:
statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
En natuurlijk de MySQL-documentatie laat zien hoe dezelfde activiteit voor AUTO_INCREMENT-kolommen kan worden uitgevoerd , wat blijkbaar is wat je nodig hebt.
Als u beide tegelijk in dezelfde transactie moet uitvoeren, door de verklaringen in één string in te dienen met een puntkomma als scheiding tussen hen, zoals als volgt:
statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
dan moet je de methode execute() gebruiken. Merk op dat dit afhangt van de ondersteuning die wordt geboden door de database en het JDBC-stuurprogramma voor het samenvoegen van instructies in één enkele execute(). Dit wordt ondersteund in Sybase en MSSQL Server, maar ik denk niet dat het wordt ondersteund in MySQL.