【问题标题】:Last record in SQLite database doesn't get deletedSQLite 数据库中的最后一条记录不会被删除
【发布时间】:2013-11-12 13:12:13
【问题描述】:

我有一个切换按钮,选中时将数据保存到 SQLite 表中,未选中时从表中删除数据。我正在从同一个表中填充一个列表视图。因此,当我取消选中切换按钮时,可以一一删除记录,除了最后一条记录,它显示在列表视图中。

但是当我检查切换按钮以插入新记录时,列表视图中的最后一条记录被新记录替换。

下面是切换按钮代码

if(bookmark.isChecked()){
                // Insert record
                }
        }else{
                dbAdapter.write();
                dbAdapter.deleteSingleBookmark(urlHost1);
                dbAdapter.close();
               }

Sqlite 代码

public boolean deleteSingleBookmark(String bookmarkHost2) throws SQLException{
    return (int) db.delete(BOOKMARKS_TABLE, BOOKMARK_NAME + "=?", new String[] { bookmarkHost2 }) > 0;
}

我在 deleteSingleBookmark 方法中尝试了“>=0”,但这不起作用。我的问题类似于this,但我没有使用光标。

如何从列表视图中删除最后一条记录?

【问题讨论】:

  • 当你试图删除最后一条记录时,这个函数deleteSingleBookmark会返回什么?
  • 试试这个,返回 (int) db.delete(BOOKMARKS_TABLE, BOOKMARK_NAME + "='" + bookmarkHost2 + "'", null) >
  • @SSS 返回一个 db 记录
  • @ImtiyazKhalani 您的代码使应用程序崩溃
  • @User210282 如果行被删除,您的 db.delete() 方法将返回已删除的行 id,否则将返回 0。所以尝试将 db.delete() 方法的返回值打印到知道它是否被删除。

标签: android android-listview android-sqlite sql-delete


【解决方案1】:

您需要使用您为 ListView 提供的 ListViewAdapter 中的数据进行操作。 从适配器和调用方法中删除所需的数据:

yourAdapter.notifyDataSetChanged();

【讨论】:

    【解决方案2】:

    试试

    public boolean deleteSingleBookmark(String bookmarkHost2) throws SQLException{
        return (int) db.delete(BOOKMARKS_TABLE, BOOKMARK_NAME + "="+bookmarkHost2, null) > 0;
    }
    

    【讨论】:

    • 尝试了您的代码,但抛出了不幸的是,应用程序已停止。在 logcat 中,抛出 SQLiteException,这行是原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2015-12-03
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多