我使用SQLite
db来存储数据集,我使用查询语句来获取包含数据的结果集(例如),如下所示
0,3,4,88,6,66,77,4,3,5,88
我用,
while(rs.next){ //rs is result set
if(!rs.next){
// if last element do something
}
}
通过这个我可以得到最后一个元素但是每次循环运行时,结果集会增加两次,一次是at而另一次是if(通过rs.next
)。我不能rs.previous
因为SQLite不支持它。
编辑:
我需要检查元素是否是结果集中的最后一条记录(不是最后一条记录的值,因为结果集也可能包含重复值)。
有什么方法可以实现这个目标吗?
请帮忙。
答案 0 :(得分:3)
如果你不能移动光标(到最后一个位置),那么你只需要迭代到最后......
int lastValue = -1;
while(rs.next){ //rs is result set
lastValue = ...;
}
这应该记录从结果集中提取的最后一个值。
<强>更新强>
这取决于您的表格结构,但您可以尝试类似......
SELECT Column1
FROM tbl
GROUP By Column1
HAVING COUNT(*) = 1
根据您的示例输入,生成...
| Column1 |
|---------|
| 0 |
| 5 |
| 6 |
| 66 |
| 77 |
从查询中删除所有重复值...
并... 强>
如果你真的很喜欢......
SELECT Column1
FROM tbl
GROUP By Column1
HAVING COUNT(*) = 1
order by Column1 DESC LIMIT 1
这将颠倒选择的顺序,并仅根据您的示例返回第一个值(77
)。
这意味着你只需要......
if (rs.next()) {
// Get value from the result set...
}
而不是一直走到ResultSet
答案 1 :(得分:3)
希望这会对你有所帮助
boolean recordsAvailable = false;
int lastRecord = 0;
recordsAvailable = rs.next;
while (recordsAvailable)
{
lastRecord = rs.getInt("MY_VALUE");
// Do all actions here...
....
// Towards the end of the loop,
if (rs.next)
{
// Records available
}
else
{
// Last record
// Do actions with the variable lastRecord
recordsAvailable= false;
}
}