在SQLiteDatabase上创建表失败

时间:2011-10-17 08:00:19

标签: android sqlite

我正在使用以下代码在我的数据库中添加一个新表:

 @Override
  public void onCreate(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE" + QRCODE_LINK + "(" +
                    "ID" + "INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + "Title" + "text,"
                    + "HISTORY" + " text not null);" );
}

但是,每当我插入数据时都会收到错误,因为根据日志,表格不存在。当我创建桌子时,我错过了什么吗?

这是日志:

10-17 13:56:55.362: ERROR/Database(6791): Error inserting inhistory=1 qr_url=data1
10-17 13:56:55.362: ERROR/Database(6791): android.database.sqlite.SQLiteException: no such table: qrcode_link: , while compiling: INSERT INTO qrcode_link(inhistory, qr_url) VALUES(?, ?);
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1123)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1509)
10-17 13:56:55.362: ERROR/Database(6791):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1382)

2 个答案:

答案 0 :(得分:3)

创建表

后它们没有空格

答案 1 :(得分:0)

在告诉它是整数还是文本之前,你需要添加一些间距。

History列中的内容是正确的,但您实际拥有的IDIDINTEGER以及TitleTitletext列中的@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE" + QRCODE_LINK + "(" + "ID" + " INTEGER PRIMARY KEY AUTOINCREMENT, " + "Title" + " text," + "HISTORY" + " text not null);" ); } <。 / p>

"CREATE TABLE " + QRCODE_LINK + "("

希望这是有道理的:)

修改

好的,再次阅读代码。创建表{{1}}等时需要间距。

正如Agriesean所说的那样。但如果没有其他更正,您将无法获得正确的列。