gpt4 book ai didi

android - 如何删除 SQLITE 数据库中的第一行?

转载 作者:行者123 更新时间:2023-11-30 04:00:22 29 4
gpt4 key购买 nike

我的 ListView 显示来 self 的 SQLITE 数据库的数据。通过长按 ListViewItem,我删除了这个特定的项目。EveryThing 工作正常,但我没有删除我的第一个项目。我在 LogCat 或其他方面没有发现任何错误。什么也没有发生。

这是我在数据库类中的代码:

public void deleteEntry(String TABLE, int pos) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(TABLE, KEY_ROWID + "=?" , new String[] { String.valueOf(pos)});

// also tryed this code
database.delete(TABLE, KEY_ROWID + "= '" + pos +"'",null);
}

这是我的 ListView Activity 的代码:

// Deletes the given row
database.deleteEntry(MyDatabase.DATABASE_TABLE_ORDERS, position);
updateList();

我很确定提交的 int pos 代表相应数据库条目的 rowId(对于第一个条目 pos 是 0,对于第二个 pos 是 1 等等 )

updateList() 创建一个新的 ListView 并再次从数据库中加载所有数据

有没有人知道为什么我可以删除 ListView 中的所有项目/我的数据库中的行,除了我的第一个条目?感谢您的帮助!

最佳答案

在多次阅读您的问题后,我认为我最初在评论中提出的问题是...

在我看来,您正在使用 int pos 参数并认为它是数据库中的行 ID,但事实并非如此。 int pos 参数是列表中的位置(可能与行 ID 不同,具体取决于您的排序等)。

行 ID 包含在监听器的 long id 参数中。以下更改应该可以帮助您(假设我的猜测是正确的)。

@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
database.deleteEntry(MyDatabase.DATABASE_TABLE_ORDERS, id);
updateList();
}

public void deleteEntry(String TABLE, long id) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(TABLE, KEY_ROWID + "=?" , new String[] { String.valueOf(id)});

// or this could be used
database.delete(TABLE, KEY_ROWID + "= " + id ,null);
}

关于android - 如何删除 SQLITE 数据库中的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584094/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com