查询SELECT时出现SQLiteException

时间:2018-07-01 05:01:28

标签: java android sqlite exception

我正在开发带有SQLite数据库的Android应用程序。它记录交易。 transactions表具有以下列:

  • idTransaction INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT
  • date DATE NOT NULL
  • type INT NOT NULL
  • details VARCHAR(100) NOT NULL
  • notes VARCHAR(300) NOT NULL
  • amount DOUBLE NOT NULL
  • account INT NOT NULL
  • category INT NOT NULL

我还制作了一种获取所有事务的游标的方法:

// Select all Transactions
protected Cursor getTransactions() throws SQLException {
    Cursor mCursor = null;
    String[] colums = new String[]{"idTransaction", "date", "type", "details", "notes", "amount", "account", "category"};
    mCursor = this.getReadableDatabase().query("Transactions", colums, null, null, null, null, "name ASC");
    return mCursor;
}

在另一个类中,我创建了一种方法,该方法可以在调用getTransactions()方法时在光标中移动。

但是例外发生在这一行:

mCursor = this.getReadableDatabase().query("Transactions", colums, null, null, null, null, "name ASC");
  

android.database.sqlite.SQLiteException:没有这样的列:name(Sqlite代码1):,同时编译:SELECT idTransaction,日期,类型,详细信息,注释,金额,科目,类别FROM事务ORDER BY名称ASC,(操作系统错误-2:无此类文件或目录)

我检查了表名和所有列名。我删除并重新安装了该应用程序,但不知道为什么会发生异常。

2 个答案:

答案 0 :(得分:2)

您正在使用name ASC的订单,但没有name列。这就是错误消息中说no such column: name

的含义

答案 1 :(得分:1)

您使用的Query方法的格式为

query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

Here

正如您提到 orderBy 作为“名称ASC” 一样,但是不幸的是,您的查询字符串不包含任何此类列,因此导致您提到的异常。

要解决此问题,请在列列表中也添加 name 列,否则将 orderBy 更改为任何现有列名称例如“日期ASC”