我有一张带有ID和名字的桌子.我想通过这个表的每一行.
TheID是主键和auto_increment.
TheID是主键和auto_increment.
我不能使用(?)单个查询来获取所有行,因为表格很大.
我正在为每一个结果做点什么.我希望有可能停止这项任务,并在以后继续.
我以为我可以这样做:
for (int i = 0; i < 90238529; i++) { System.out.println("Current ID :" + i); query = "SELECT name FROM table_name WHERE id = " + i; ... }
但这不起作用,因为auto_increment跳过了一些数字.
如上所述,我需要一个选项来停止这项任务,让我能够在我离开的地方重新开始.与上面的示例代码一样,我知道当前条目的ID,如果我想再次启动它,我只需设置int i = X.
解决方法
使用单个查询来获取所有记录:
query = "SELECT name FROM table_name WHERE id > ? ORDER BY id";
然后迭代ResultSet并读取您希望的记录数(您不必读取ResultSet返回的所有行).
下次运行查询时,传递上一次执行中获得的最后一个ID.