Java 使用PreparedStatements-使用多个参数更新(未知编号)

Java 使用PreparedStatements-使用多个参数更新(未知编号),java,mysql,sql,jdbc,prepared-statement,Java,Mysql,Sql,Jdbc,Prepared Statement,我知道最佳做法是拥有固定数量的参数,然后使用preparedStatement.setParamxxx定义它们 如果我有一个学生id列表,并且我想为每个学生数据行更新一列,该怎么办 更新学生集学生成绩=在哪里失败学生id在哪里?将是我的列表对象中的学生ID列表。做这件事最好的方法是什么?/*我宁愿使用单独的更新并循环它们,而不是使用IN操作符,类似于GriffeyDog的建议。建议可能将批量更新拆分为1000或更少*/ /*假设al是包含学生ID列表的arraylist,假设学生ID数据类型为i

我知道最佳做法是拥有固定数量的参数,然后使用preparedStatement.setParamxxx定义它们

如果我有一个学生id列表,并且我想为每个学生数据行更新一列,该怎么办


更新学生集学生成绩=在哪里失败学生id在哪里?将是我的列表对象中的学生ID列表。做这件事最好的方法是什么?

/*我宁愿使用单独的更新并循环它们,而不是使用IN操作符,类似于GriffeyDog的建议。建议可能将批量更新拆分为1000或更少*/

/*假设al是包含学生ID列表的arraylist,假设学生ID数据类型为int*/

String updateTableSQL = "update student set student_grade='FAIL' where student_id = (?) ";              
PreparedStatement preparedStatement = dbConnection.prepareStatement(updateTableSQL);
for (int i=0;i<al.size();i++){
preparedStatement.setInt(1,al.get(i) );
preparedStatement.addBatch();

}
preparedStatement.executeBatch();

dbConnection.commit();

把你的学生圈过来,插入一个?使用Apache commons的StringUtils类-StringUtils.repeat?、ids.size;你看过吗?为什么?IN接线员会快几英里。