Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat mengeluarkan pernyataan manipulasi data dengan executeQuery()

Anda perlu menggunakan metode executeUpdate() untuk mengeksekusi pernyataan INSERT, sementara Anda harus menggunakan metode executeQuery() untuk mengeksekusi pernyataan SELECT. Ini karena persyaratan yang dikenakan oleh spesifikasi JDBC pada penggunaannya:

Dari dokumentasi Java API untuk Pernyataan.executeQuery() :

dan dari dokumentasi Java API untuk Pernyataan.executeUpdate() :

Kode Anda (kode semu yang diposting di sini) akan muncul sebagai:

statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation

Dan tentu saja, Dokumentasi MySQL menunjukkan cara melakukan aktivitas yang sama untuk kolom AUTO_INCREMENT , yang tampaknya Anda butuhkan.

Jika Anda perlu menjalankan keduanya bersama-sama dalam transaksi yang sama, dengan mengirimkan pernyataan dalam satu string dengan titik koma yang memisahkannya seperti berikut:

statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");

maka Anda harus menggunakan metode execute() . Perhatikan, bahwa ini bergantung pada dukungan yang ditawarkan oleh Database dan driver JDBC untuk mengelompokkan pernyataan bersama dalam satu eksekusi(). Ini didukung di Sybase dan MSSQL Server, tapi menurut saya ini tidak didukung di MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Nilai yang Diperbarui di MySQL alih-alih baris yang terpengaruh

  2. hitung perbedaan tanggal dalam jam menggunakan php dan mysql

  3. MySQL Query GROUP MENURUT hari / bulan / tahun

  4. Aktifkan pemicu setelah pembaruan kolom tertentu di MySQL

  5. NodeJS MySQL:mengukur waktu eksekusi kueri