有一张表 student
id name
1 tom
2 jack
3 rose
4 mary求问:执行以下代码,为什么最后只有一条记录,就是表中最后一条谢谢。Connection conn = DBConnect.getInstance().getConnection();
conn.setAutoCommit(false);
String sql = "select * from student where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
int[] ids = {1,2,3,4};
for(int i:ids){
ps.setLong(1, i);
ps.addBatch();
}
ResultSet rs = ps.executeQuery();
int num = 0;
while (rs.next()) {
num++;
System.out.println(rs.getLong(1) + " " + rs.getString(2));
}
System.out.println("num of test:" + num);
conn.setAutoCommit(true);
id name
1 tom
2 jack
3 rose
4 mary求问:执行以下代码,为什么最后只有一条记录,就是表中最后一条谢谢。Connection conn = DBConnect.getInstance().getConnection();
conn.setAutoCommit(false);
String sql = "select * from student where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
int[] ids = {1,2,3,4};
for(int i:ids){
ps.setLong(1, i);
ps.addBatch();
}
ResultSet rs = ps.executeQuery();
int num = 0;
while (rs.next()) {
num++;
System.out.println(rs.getLong(1) + " " + rs.getString(2));
}
System.out.println("num of test:" + num);
conn.setAutoCommit(true);
for(int i:ids){
ps.setLong(1, i);
ps.addBatch();
}循环结束的时候 i=4 所以你的 ResultSet rs = ps.executeQuery(); 执行的时候等同于 select * from student where id = 4需要修改你的程序。 比如 where find_in_set(id,'1,2,3,4');
有什么方法可以批量查询?