Android SQLite的问题:'没有这样的专栏'错误

时间:2014-12-29 05:28:58

标签: android database sqlite

我正在制作应用程序,用于在Android中的SQLite数据库中存储用户购买的列表。我遇到的一个问题是我无法删除任何条目。这是我收到的错误消息:android.database.sqlite.SQLiteException: no such column: purchaseId (code 1): , while compiling: DELETE FROM purchases WHERE purchaseId='0'。它没有找到purchaseId列。我该怎么办?

这是我的相关代码:

在此函数中,我将数据库内容列表存储在名为purchaseList的arraylist中。然后我遍历所有项目,将id传递给我的deletePurchase方法:

public void clearHistory(){
        purchaseList = dbTools.getAllPurchases();
        int size = purchaseList.size();
        for(int id = 0; id < size; id++) {
            String idString = String.valueOf(id);
            dbTools.deletePurchase(idString);

        }

    }

在这个函数中我创建了数据库。 purchaseId是一个INTEGER PRIMARY KEY,它自动增加:

public void onCreate(SQLiteDatabase database) {
        String query = "CREATE TABLE purchases ( purchaseId INTEGER PRIMARY KEY, datePurchased TEXT, " +
                "storeName TEXT, price TEXT)";


        database.execSQL(query);
}

这个功能是我认为问题所在。我知道purchaseId是一个整数,但这一行是正确的:String deleteQuery = "DELETE FROM purchases WHERE purchaseId='"+ id +"'";

public void deletePurchase(String id) {
        SQLiteDatabase database = this.getWritableDatabase();

        String deleteQuery = "DELETE FROM purchases WHERE purchaseId='"+ id +"'";   //***line of interest***
        database.execSQL(deleteQuery);

    }

我认为有一个简单的解决方法,因为如果我使用另一个列像storeName这是一个STRING

,deleteQuery会起作用

任何帮助?

2 个答案:

答案 0 :(得分:3)

尝试这样: 对于整数类型'不是必需的。

String deleteQuery = "DELETE FROM purchases WHERE purchaseId="+ id ;   

答案 1 :(得分:1)

尝试删除single quote(')

  String deleteQuery = "DELETE FROM purchases WHERE purchaseId="+ id; //Remove single quote

您的purchaseId列类型是整数。