预期Sqlite <表约束>

MOH*_*S3N 0 sqlite android 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);
Run Code Online (Sandbox Code Playgroud)

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

<column definition name> or <table constraint>expected,got 'current_date'
Run Code Online (Sandbox Code Playgroud)

我该如何修复这个错误?

Thankes.

Dar*_*ish 5

SQLite不允许您为保留名称的列命名.

在这里您可以找到完整列表

我该如何修复这个错误?

将列名'current_date'更改为其他名称

如何使用keywoard作为名称?

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

  • 'keyword'单引号中的关键字是字符串文字.

  • "keyword"双引号中的关键字是标识符.

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

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