我在java工作。我有一个表,有100行和2列。请考虑以下查询: -
String id, lastId;
ArrayList list=new ArrayList();
String query="select id from user limit 0,9";
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
id=rs.getString(1);
list.add(id);
}
如上所述,我已经给了10个限制。但我想要获取所有100行。所以请告诉我如何从迭代9行后的第10行开始。是否需要将id设置为lastId.Please给我一些简单的代码。
答案 0 :(得分:5)
您已限制9
,而不是10
。
要从第11位到第20位获取记录,请使用:
SELECT id
FROM user
ORDER BY
id
LIMIT 10, 10
然后
SELECT id
FROM user
ORDER BY
id
LIMIT 20, 10
等等。
请注意,您必须指定ORDER BY
才能使记录的顺序保持一致。
答案 1 :(得分:0)
听起来你正试图实现分页。您是否看过CachedRowSet中提供的寻呼支持? (参见第10节,寻呼数据)。
此示例代码取自该javadoc:
CachedRowSet crs = CachedRowSetImpl();
crs.setPageSize(100);
crs.execute(conHandle);
while(crs.next() {
. . . // operate on first chunk of 100 rows in crs, row by row
}
while(crs.nextPage()) {
while(crs.next()) {
. . . // operate on the subsequent chunks (of 100 rows each) in crs,
// row by row
}
}
答案 2 :(得分:0)
首先从MySql获取行数
String query = "SELECT COUNT(*) FROM user";
int count;
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
count=rs.getInt(1);
}
然后遍历循环。
String id, int counter =1;
ArrayList list=new ArrayList();
for(int i=1; i< count/10;i++)
{
query="select id from user limit " + i-1 +", " + (i *10)-1 ;
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
id=rs.getString(1);
list.add(id);
}
}
由于您的代码是Java,因此可能存在语法错误。请修理它们:)
答案 3 :(得分:0)
String query="select id from user limit 0,9";
String query="select id from user limit"+ start + "," + end;
在这里,您已经硬编码了偏移量,限制。而是使用变量start,end,data_limit(根据示例为10)。 “开始”应该是开始索引。 “结束”应为(“开始” + data_limit)。