【问题标题】:SQLITE - Delete nth row (Android)SQLITE - 删除第 n 行 (Android)
【发布时间】:2014-07-10 13:42:07
【问题描述】:

所以我有一个ListView和一个DatabaseHandler,我想根据长按删除一个ListView项。它也应该从数据库中删除。

但是当我删除 ID 为 1 的第一项时,ListView 中新的第一项将是数据库中 ID 为 2 的项。

ListView           Database
1                  1
2                  2
3                  3

删除后

ListView           Database
1                  2
2                  3

我想根据ListView ID删除数据库条目。

delete from (select * from Student WHERE rownum = 2)

但它给了我一个错误......

我该怎么做?谢谢!

【问题讨论】:

  • 删除后,只需重新读取您的数据库并在清除后再次填充您的 ListView。
  • 是的,但是如果我想删除例如列表视图中的新第一项?
  • 然后将id存储在一个不可见的TextView中(没了),填写自定义适配器
  • 哪个id?因此,当用户删除 ListView 项目 1 时,我将删除数据库项目 1。一切都很好。但随后用户决定删除 ListView 中的下一项,仍然是第 1 项,因为这些项向上移动。但是我的代码尝试删除数据库 id 1,但没有数据库 id 1。
  • 您基本上是在说您无法将列表行绑定到数据库行,对吗?您需要解决这个问题,也许可以通过从数据库“get”函数返回 id 并将其存储在列表数据模型中。我们不知道您的代码是如何设置的,因此我们无法为您提供更多帮助。

标签: android sqlite listview


【解决方案1】:

您可以通过以下方式获得第(n+1)条记录:

SELECT * FROM Students LIMIT 1 OFFSET n;

n 是您从零开始的索引。因此,您可以通过以下方式选择第二行:

SELECT * FROM Students LIMIT 1 OFFSET 1;

您也可以通过以下方式删除第二行:

DELETE FROM Students WHERE id in (SELECT id FROM Students LIMIT 1 OFFSET 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多