1

我创建了数据库。但它给了我“没有这样的列错误”。我确定我的数据库有该列,因为我使用 SQLite 管理器添加数据。我不明白为什么我会收到这样的错误。我在这里搜索过这个问题,但答案对我没有帮助。

大多数答案都说如果在编写此代码时列名之间没有空格,则会出现此错误。但我认为我写得对。

public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL(
            "CREATE TABLE " + TABLE_NAME + " ("
           + BNUM_COL + " TEXT, " 
          + PNAME_COL + " TEXT, " 
          + AUTHOR_COL + " TEXT, " 
           + TYPE_COL + " TEXT, " 
           + PYEAR_COL + "INTEGER );");
  }

我的 Logcat 还向我展示了:

Cursor c = db.query("btable", SELECT, null, null, null, null, null, null);

请帮我。

4

1 回答 1

13

最后一个字段在列名和关键字之间没有空格INTEGER。您需要更改此行:

+ PYEAR_COL + "INTEGER );");

对此:

+ PYEAR_COL + " INTEGER );");
               ^
               |
               Note the extra space!

帮助追踪此类错误的一个简单诊断工具是将 SQL 查询存储在一个变量中,并在尝试执行它之前对其进行记录。然后您可以检查 logcat 输出以查看实际构建的语句。

于 2013-07-22T03:52:12.680 回答