sql >> Databáze >  >> RDS >> Mysql

Nelze vydat příkazy pro manipulaci s daty pomocí funkce executeQuery()

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.



  1. Vyberte limit jedinečných záznamů s N řádky

  2. Příklady převodu „date“ na „smalldatetime“ v SQL Server (T-SQL)

  3. Proveďte dynamický dotaz s go v sql

  4. Předat parametry WHERE do zobrazení PostgreSQL?