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