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

时间:2012-09-25 13:34:24

标签: android sql sqlite listview

我的ListView显示来自我的SQLITE数据库的数据。 通过ListViewItem上的Longclick我删除了这个特定的Item。 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()创建新的列表视图并再次从数据库加载所有数据

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

2 个答案:

答案 0 :(得分: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);   
}   

答案 1 :(得分:0)

  

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

我会先在测试台上进行测试!