【问题标题】:SQLite - Reading last element from result setSQLite - 从结果集中读取最后一个元素
【发布时间】:2014-08-13 00:55:35
【问题描述】:

我正在使用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  
}   
}

这样我可以获得最后一个元素,但每次循环运行时,结果集都会增加两次,一次在 while 一次,另一次在 if(通过rs.next)。我做不到rs.previous,因为 SQLite 不支持它。

编辑:

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

我有什么办法可以做到这一点吗??

请帮忙。

【问题讨论】:

  • 您应该能够将查询更改为仅返回最后一条记录
  • @JigarJoshi 我不能使用最后一个记录值,因为它也可能包含重复值。
  • @user3164187 我认为您需要澄清这一点,因为您的问题的阅读方式,您只需要ResultSet的最后一个结果
  • @user3164187 如果我理解正确,如果一个数字作为最后一个元素存在但在中间某处有重复,则该数字不能被视为解决方案。因此,本质上这意味着您正在尝试找到结果集中的最后一个不同元素。对吗?
  • @kusur 是的!这就是我试图提出的问题..

标签: java sqlite resultset


【解决方案1】:

如果你不能移动光标(到最后一个位置),那么你只需要迭代到最后......

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的尽头

【讨论】:

  • 结果集也可以包含重复值。如果 8 是最后一个值,它也可能在其他位置。
  • 然后呢?抱歉,我可能没抓住重点,你想要最后一个元素不是吗?
【解决方案2】:

希望对你有帮助

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

}

【讨论】:

  • 但是你又双跳了,rs.next,然后rs.next 会在你还没看第一条记录之前将你移动到第二条记录...
  • @MadProgrammer:下一个 rs.next 将在 while 循环结束时调用。我已经编辑了答案。希望现在更有意义!
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多