Mysql
 sql >> база данни >  >> RDS >> Mysql

JDBC пакет с PreparedStatement не работи в MySQL

Изглежда, че създавате нов PreparedStatement при всяка итерация, така че executeBatch() ще бъде приложен само към последния PreparedStatement обект.

Освен това PreparedStatement се използва за избягване на SQL инжекция и се грижи за избягването на стойности, когато използвате ? система от заместители.

addBatch() методът, който използвате, е предназначен да работи с променливи параметри :

, а не с необработени заявки, както се опитахте да направите (за това бихте използвали addBatch(java.lang.String заявка)

Следният пример трябва да прави това, което искате:

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. mysqld_safe директория '/var/run/mysqld' за UNIX сокет файл не съществува

  2. Как мога да предотвратя Hibernate + c3p0 + MySql създаването на голям брой спящи връзки?

  3. Най-лесният начин да конвертирате байтов масив в Blob в java

  4. MYSQL Дедуплицирайте и премахнете дублиращия се ред с най-малко данни

  5. Как да направя <option selected=selected> зададен от MySQL и PHP?