Android SQLite中没有此类列错误
我创建了一个数据库。但它给了我“没有这样的列错误”。我确信我的数据库有这样的权限,因为我使用SQLite管理器添加数据。我不明白为什么我会犯这样的错误。我在这里搜索了这个问题,但答案对我毫无帮助 大多数答案都说,如果在编写此代码时列名之间没有空格,则会出现此错误。但我想我写对了Android SQLite中没有此类列错误,android,sqlite,Android,Sqlite,我创建了一个数据库。但它给了我“没有这样的列错误”。我确信我的数据库有这样的权限,因为我使用SQLite管理器添加数据。我不明白为什么我会犯这样的错误。我在这里搜索了这个问题,但答案对我毫无帮助 大多数答案都说,如果在编写此代码时列名之间没有空格,则会出现此错误。但我想我写对了 public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL( "CREATE TABLE "
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);
请帮帮我。最后一个字段在列名和关键字
INTEGER
之间没有空格。您需要更改此行:
+ PYEAR_COL + "INTEGER );");
为此:
+ PYEAR_COL + " INTEGER );");
^
|
Note the extra space!
帮助跟踪此类错误的一个简单诊断工具是将SQL查询存储在变量中,并在尝试执行它之前记录它。然后,您可以检查logcat输出以查看实际生成的语句。最后一个字段在列名和关键字
INTEGER
之间没有空格。您需要更改此行:
+ PYEAR_COL + "INTEGER );");
为此:
+ PYEAR_COL + " INTEGER );");
^
|
Note the extra space!
帮助跟踪此类错误的一个简单诊断工具是将SQL查询存储在变量中,并在尝试执行它之前记录它。然后,您可以检查logcat输出,看看实际生成了什么语句。我仍然不能相信我犯了这个愚蠢的错误。非常感谢你@Adaichi-这可能感觉像是一个愚蠢的错误,但每个程序员都犯过同样的错误(可能多次)。在我看来,我自己的每一行代码都是完美的(除非有一个
//FIXME
潜伏在我身边),直到有人为我检查它时说“嗯,这是对的吗?”。(答案总是“”)关于存储和输出查询的好建议我现在还不能相信我犯了这个愚蠢的错误。非常感谢你@Adaichi-这可能感觉像是一个愚蠢的错误,但每个程序员都犯过同样的错误(可能多次)。在我看来,我自己的每一行代码都是完美的(除非有一个//FIXME
潜伏在我身边),直到有人为我检查它时说“嗯,这是对的吗?”。(答案总是“”)关于存储和输出查询的好建议