Sqlite <ограничение таблицы> ожидается - PullRequest
0 голосов
/ 05 января 2019

я написал 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);

Но когда я хочу запустить этот код, я получаю это сообщение об ошибке:

<column definition name> or <table constraint>expected,got 'current_date'

Как я могу исправить эту ошибку?

Thankes.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Я думаю, что current_date - это ключевое слово SQL. Просто замените его на любое другое имя, например «present_date», и вам будет хорошо.

0 голосов
/ 05 января 2019

SQLite не позволяет вам именовать столбцы с зарезервированными именами.

Здесь Вы можете найти полный список

Как я могу исправить эту ошибку?

изменить имя столбца 'current_date' на другое

Как использовать клавиатуру в качестве имени?

Если вы хотите использовать ключевое слово в качестве имени, вам нужно заключить его в кавычки. В SQLite есть четыре способа цитирования ключевых слов:

  • 'ключевое слово' Ключевым словом в одинарных кавычках является строковый литерал.

  • "ключевое слово" Ключевое слово в двойных кавычках является идентификатором.

  • [ключевое слово] Ключевое слово, заключенное в квадратные скобки, является идентификатором. Это не стандартный SQL. Этот механизм цитирования используется MS Access и SQL Server и включен в SQLite для совместимости.

  • keyword Ключевое слово, заключенное в серьезные акценты (код ASCII 96), является идентификатором. Это не стандартный SQL. Этот механизм цитирования используется MySQL и включен в SQLite для совместимости.

...