无法执行Preparedstatement批处理JDBC语句

无法执行Preparedstatement批处理JDBC语句,jdbc,insert,prepared-statement,Jdbc,Insert,Prepared Statement,下面是我试图执行batch PreparedStatement的代码。这些语句在没有批处理的情况下运行良好,但我无法批处理 使用“?”参数插入 获取以下错误: java.sql.BatchUpdateException:您的sql语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“?、?、?、?、?、?)”附近使用的正确语法 同样,我也无法使用语句批插入插入 public void insertValuesInTotalResponseWithPSwithBatch(列表详细信息)引

下面是我试图执行batch PreparedStatement的代码。这些语句在没有批处理的情况下运行良好,但我无法批处理 使用“?”参数插入

获取以下错误:

java.sql.BatchUpdateException:您的sql语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“?、?、?、?、?、?)”附近使用的正确语法

同样,我也无法使用语句批插入插入

public void insertValuesInTotalResponseWithPSwithBatch(列表详细信息)引发SQLException{
连接接头;
int批次计数=0;
conn=MySqlConnectionUtility.getConnection();
PreparedStatement ps=null;
连接设置自动提交(错误);
(记录:细节){
如果(!record.getLon().trim().equals(“bac”)){
System.out.println(“记录为”+记录);
String query=“插入AwithbatchwitPS”+“值(?,,,,,?,,,?)”;
ps=conn.prepareStatement(查询);
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());
系统输出打印项次(ps);
ps.addBatch(查询);
System.out.println(“Btach1 coutn1是”+批次计数);
批次计数++;
System.out.println(“Btach2 coutn2为”+批次计数);
如果(批次计数%200==0){
试一试{
ps.executeBatch();
}捕获(例外e){
System.out.println(“Btach coutn为”+批次计数);
//e.printStackTrace();
}最后{
conn.commit();
ps.clearBatch();
}
批次计数=0;
}
}
details_size=details.size();
}
如果(批次计数!=0){
试一试{
ps.executeBatch();
conn.commit();
}捕获(BatchUpdateException e){
//e.printStackTrace();
}
批次计数=0;
}
}

loopMove在循环外准备语句时,只能在(记录…)的
外调用一次
prepareStatement()
,您当前的代码每200条记录只执行一次,并且在准备时,当语句句柄替换为新的语句句柄时,将丢弃所有其他记录。感谢您的优化建议。。但是我的程序再次抛出了这个错误<代码>java.sql.BatchUpdateException:您的sql语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行“?,?,?,?,?,?,?)”附近使用的正确语法,即使查询没有问题