【发布时间】:2015-02-25 08:12:57
【问题描述】:
我正在制作将用户购买列表存储在 android 的 SQLite 数据库中的应用程序。我遇到的一个问题是我无法删除任何条目。这是我收到的错误消息:android.database.sqlite.SQLiteException: no such column: purchaseId (code 1): , while compiling: DELETE FROM purchases WHERE purchaseId='0'。它没有找到 purchaseId 列。我能做什么?
这是我的相关代码:
在这个函数中,我将数据库内容的列表存储在一个名为 purchaseList 的数组列表中。然后我遍历所有项目,将 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,deleteQuery 可以工作,它是一个字符串
有什么帮助吗?
【问题讨论】:
-
试试这个.. "DELETE FROM purchase WHERE purchaseId='+ id +'";