Sqlite预期

时间:2019-01-05 06:54:03

标签: android sqlite android-sqlite

我以这种形式写了sqlite句子:

String SQL_CREATE_BACKUP  ="CREATE TABLE " +smsEntry.BACKUP +"("
            +smsEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            +smsEntry.BACKUP_LAST_MODE +" INTEGER NOT NULL,"
            +smsEntry.BACKUP_CURRENT_MODE +" INTEGER NOT NULL,"
            +smsEntry.BACKUP_LAST_TYPE +" INTEGER NOT NULL,"
            +smsEntry.BACKUP_CURRENT_TYPE +" INTEGER NOT NULL,"
            +smsEntry.BACKUP_MILLI_DATE +" LONG NOT NULL,"
            +smsEntry.BACKUP_CURRENT_DATE + " TEXT NOT NULL);";

 db.execSQL(SQL_CREATE_BACKUP);

但是当我想运行此代码时,会收到以下错误消息:

{{2} }

如何解决此错误?

谢谢。

2 个答案:

答案 0 :(得分:5)

SQLite不允许您使用保留名称来命名列。

Here您可以找到完整的列表

  

如何解决此错误?

将列名“ current_date”更改为其他名称

  

如何使用键盘密码作为名称?

如果要使用关键字作为名称,则需要引用它。在SQLite中有四种引用关键字的方法:

  • “关键字”单引号中的关键字是字符串文字。

  • “关键字”用双引号引起来的关键字是标识符。

  • [关键字]用方括号括起来的关键字是一个标识符。这不是标准的SQL。这种引用机制由MS Access和SQL Server使用,并且包含在SQLite中以实现兼容性。

  • keyword用重音括起来的关键字(ASCII码96)是一个标识符。这不是标准的SQL。这种引用机制由MySQL使用,并且包含在SQLite中以实现兼容性。

答案 1 :(得分:0)

我认为'current_date'是一个SQL关键字。只需将其更改为任何其他名称,例如'present_date',您就可以使用了。