【问题标题】:Issue with Android SQLite: 'No such column' error [duplicate]Android SQLite 的问题:“没有这样的列”错误 [重复]
【发布时间】: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 +'";

标签: android database sqlite


【解决方案1】:

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

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

【讨论】:

  • 仍然收到类似的错误:android.database.sqlite.SQLiteException: no such column: purchaseId (code 1): ,同时编译:DELETE FROM purchase WHERE purchaseId=0
  • 一旦卸载运行应用,自动递增从1开始
  • 啊,好吧,我不知道。现在可以了,谢谢!
【解决方案2】:

试试这个删除single quote(')

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

您的purchaseId 列类型是整数。

【讨论】:

  • 不幸的是,我收到了类似的错误:android.database.sqlite.SQLiteException: no such column: purchaseId (code 1): ,同时编译:DELETE FROM purchase WHERE purchaseId=0
猜你喜欢
  • 2019-03-13
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多