我正在制作应用程序,用于在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会起作用任何帮助?
答案 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
列类型是整数。