SQLite - 从结果集中读取最后一个元素

时间:2014-06-23 04:00:45

标签: java sqlite resultset

我使用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不支持它。

编辑:

我需要检查元素是否是结果集中的最后一条记录(不是最后一条记录的值,因为结果集也可能包含重复值)。

有什么方法可以实现这个目标吗?

请帮忙。

2 个答案:

答案 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;
   }

}