java - 获取 SQLite 表中的行索引

标签 java sqlite

因此,为了尽量保持简洁,我需要获取数据库中 x 行和 y 行之间的所有信息。现在我有一个自动递增的 globalId 列,但是,当我从数据库中删除一行(我将要做的)时,插入的下一条数据将按预期删除数据的 globalId +1。这会产生一个问题,因为我无法简单地使用 x 和 y 值之间的 for 循环进行迭代,并获取 globalId = i 的所有数据点。但是,如果我可以获得该行的索引,那么与现在已删除的过去的行之间就不会有间隙。我尝试了很多方法来获取行索引,但似乎没有任何效果。

我使用 Java 来实现此目的,因此我从查询中返回了一个 ResultSet(如果有帮助的话)。

最佳答案

这是一个独立于平台的解决方案:

String sqlQuery = "SELECT .... FROM ... ORDER BY global_id ASC";
ResultSet rs = runQuery(sqlQuery); // a made-up method to hide the details
final int x = 10;
final int y = 20;
int i = 0;
while (i < x && rs.next()) {
    i++;
}
while (i < y && rs.next()) {
    // retrieve record
    i++;
}

那么我们在这里做什么?

  • order by 子句确保我们可以滚动到第 n 个项目 - 无论 id 序列中是否存在漏洞
    • 第一个 while 循环转到窗口的开头
    • 第二个 while 循环将遍历您需要的确切记录。您可以处理它们。

或者,您可以使用 limit-offset ,如所解释的here :

SELECT .... FROM ... ORDER BY global_id ASC LIMIT 20 OFFSET 10

只是关于偏移的警告:虽然它看起来很优雅,但它有自己的怪癖。有专家建议not to use it .

关于java - 获取 SQLite 表中的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45811141/

相关文章:

Java:可以很好地格式化日志输出的库

java - logback 在 appender 中打印完整的 MDC

c# - Java 和 C# 中的 SQLite 实现

database - 更新行内容从另一个表中的行添加值

java - 如何在java中正确编码这个URL?

java - 在 Java5 中,如何获取运行应用程序的用户的全名?

java - session 是否存在

java - 选择具有最大日期值的记录

sqlite3 : Need to Cartesian On date

objective-c - 使用 FMDB 从 SQLite 数据库中删除行