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

Batch JDBC dengan PreparedStatement tidak berfungsi di MySQL

Sepertinya Anda sedang membuat PreparedStatement pada setiap iterasi, jadi executeBatch() hanya akan diterapkan pada PreparedStatement terakhir obyek.

Selanjutnya, PreparedStatement digunakan untuk menghindari injeksi SQL dan menangani nilai yang keluar, saat Anda menggunakan ? sistem placeholder.

addBatch() metode yang Anda gunakan dimaksudkan untuk bekerja dengan parameter variabel :

, bukan dengan kueri mentah seperti yang Anda coba lakukan (untuk itu, Anda akan menggunakan addBatch(java.lang.String query)

Contoh berikut harus melakukan apa yang Anda inginkan :

String[][] data = { { "first", "data" }, { "second", "data" }, { "third", "data" } };

String sql = "insert into abc(col1,col2) values (?, ?)";// use placeholders

PreparedStatement pst = connection.prepareStatement(sql);// create a single statement

for (String[] row : data) {

       // set parameters
       pst.setString(1, row[0]);
       pst.setString(2, row[1]);

       pst.addBatch();// validate the set
}

int[] chkSql = pst.executeBatch(); // execute the batch of commands
//check if chkSql consists of 0..rollback else commit for > 0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Terlalu banyak tabel; MySQL hanya dapat menggunakan 61 tabel dalam satu gabungan

  2. Menghapus karakter yang tidak diinginkan dari kolom

  3. Bagaimana cara memigrasi direktori data MySQL dalam wadah buruh pelabuhan?

  4. Bagaimana cara menetapkan MySQL sebagai database default di Rails 3?

  5. Cara Mengembalikan Hasil Kueri sebagai Daftar Dipisahkan Koma di MySQL