Когда я пытаюсь запустить свое приложение с данными submition в SQLite, возникает ошибка синтаксиса ошибки 1 - PullRequest
0 голосов
/ 02 мая 2020

Мой запрос

String CREATE = "CREATE TABLE" +DATABASE_Bussiness+ "(" + KEY_ID +
    "INTEGER primary key AUTOINCREMENT, " + A_DATE + "TEXT,
    " + A_NAME+ "TEXT, " +A_AMOUNT+ "INTEGER);";
    db.execSQL(CREATE);

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

У вас нет пробела между именами столбцов и типом. Например, A_NAME + "TEXT...". Оно должно быть A_NAME + " TEXT..." (см. Пробел перед ТЕКСТОМ).

Также между CREATE и именем таблицы "CREATE TABLE" +DATABASE_Bussiness. Обратите внимание, что пробел перед + не находится внутри строкового литерала. Пробелы вне строковых литералов не имеют значения. "a"+"b" совпадает с "a" + "b". Оба результата в "ab". Но "a " + "b" дает "a b".

Вы также можете использовать интерполяцию строки ($) и дословную строку (@). Это более читабельно

String CREATE = $@"CREATE TABLE {DATABASE_Bussiness} (
    {KEY_ID} INTEGER primary key AUTOINCREMENT,
    {A_DATE} TEXT,
    {A_NAME} TEXT,
    {A_AMOUNT} INTEGER);";
db.execSQL(CREATE);

Кроме того, переменные должны содержать имена столбцов, а не значения столбцов. Значения вставляются в таблицу после ее создания с помощью команды INSERT INTO . Результат должен выглядеть примерно так:

CREATE TABLE Deposit (  
    DepositId INTEGER primary key AUTOINCREMENT,  
    Valuta TEXT,  
    Descrition TEXT,  
    Amount INTEGER);

Имена таблиц и столбцов не должны быть ключевыми словами, принадлежащими языку SQLite.

0 голосов
/ 02 мая 2020

Вы получите

android .database.sqlite. SQLiteException

Исключение SQLite это указывает на ошибку при разборе или выполнении SQL. Исправьте ваш запрос. Требуется интервал.

Попробуйте с помощью

String CREATE ="CREATE TABLE " + DATABASE_Bussiness + "("
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + A_DATE + " TEXT, "
                + A_NAME + " TEXT, "
                + A_AMOUNT + " INTEGER "
                + ")";

Очистить-восстановить-удалить приложение и запустить снова .

...