Это код ниже, где я пытаюсь выполнить пакет PreparedStatement. Эти операторы работают нормально без пакета, но я не могу выполнить пакетную вставку, используя "?" параметры.
Получение следующей ошибки:
java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?,?,?,?)' at line 1
То же не удается вставить, используя вставку пакета Statement.
public void insertValuesInTotalResponseWithPSwithBatch(List<A> details) throws SQLException {
Connection conn;
int batch_count = 0;
conn = MySqlConnectionUtility.getConnection();
PreparedStatement ps = null;
conn.setAutoCommit(false);
for (A record : details) {
if (!record.getLon().trim().equals("bac")) {
System.out.println("the record is " + record);
String query = "INSERT INTO AwithbatchwitPS " + " VALUES (?,?,?,?,?,?)";
ps = conn.prepareStatement(query);
ps.setInt(1, Integer.parseInt(record.getOne()));
ps.setFloat(2, Float.parseFloat(record.getTwo()));
ps.setFloat(3, Float.parseFloat(record.getThree()));
ps.setString(4, record.getDayofyear());
ps.setDouble(5, Double.parseDouble(record.getFive()));
ps.setInt(6, Integer.parseInt(record.getCount()));
System.out.println(ps);
ps.addBatch(query);
System.out.println("Btach1 coutn1 is " + batch_count);
batch_count++;
System.out.println("Btach2 coutn2 is " + batch_count);
if (batch_count % 200 == 0) {
try {
ps.executeBatch();
} catch (Exception e) {
System.out.println("Btach coutn is " + batch_count);
// e.printStackTrace();
} finally {
conn.commit();
ps.clearBatch();
}
batch_count = 0;
}
}
details_size = details.size();
}
if (batch_count != 0) {
try {
ps.executeBatch();
conn.commit();
} catch (BatchUpdateException e) {
// e.printStackTrace();
}
batch_count = 0;
}
}