【问题标题】:How to delete first row in SQLITE Database?如何删除 SQLITE 数据库中的第一行?
【发布时间】:2012-09-25 22:01:03
【问题描述】:

我的 ListView 显示来自我的 SQLITE 数据库的数据。 通过 Longclick 一个 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 活动的代码:

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

我很确定提交的 int pos 代表相应数据库条目的 rowId(第一个条目 pos 为 0,第二个 >pos 为 1 以此类推)

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

有没有人知道为什么除了我的第一个条目之外,我可以删除我的 DB 中的 ListView 中的所有项目/行?谢谢你的帮助!

【问题讨论】:

  • 它必须工作。尝试使用调试点进行跟踪。

标签: android sql sqlite listview


【解决方案1】:

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

在我看来,您正在使用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);   
}   

【讨论】:

  • 这真的很有帮助。谢谢!!!!!!!!不知道 long id 参数是针对数据库的。谢谢你:)
【解决方案2】:

database.execSQL("DELETE FROM " + TABLE + " ORDER BY " + column_to_order_by + " ASC LIMIT(0,1);"):

我肯定会先在测试台上测试这个!

【讨论】:

  • ORDER BY 子句可能有助于对表进行排序,以使“第一行”有意义。
  • 您还可以为每个条目分配一个行号(它是表中的索引),然后您可以执行 "DELETE FROM " + Table + "WHERE ROW_ID = " + pos
  • limit(0,1) 不受支持 - 只需使用 limit(1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多