экранирование имени столбца sqlite в java ContentValues - PullRequest
0 голосов
/ 01 декабря 2019

У меня есть таблица SQLite со столбцом с именем 'group'. Я пытался разграничить с помощью одинарных кавычек и квадратных скобок. Каждый раз он вставляет «0» без сообщения об ошибке. По крайней мере, когда я оставляю это в покое, я получаю сообщение об ошибке:

2019-11-30 16: 18: 43.634 11008-11008 / com.example.fitcardsworkouttracker E / SQLiteDatabase: Ошибкавставка имени = калорийность яичницы-болтуньи = 78 группа = 80 порций = 1 яйцо

android.database.sqlite.SQLiteException: рядом с «группой»: синтаксическая ошибка (код1): при составлении: ВСТАВЬТЕ В ЕДУ (название, калории, группа, порция) ЦЕННОСТИ (?,?,?,?)

                ContentValues contentValues = new ContentValues();
            String newGroup = (String)tvGroup.getSelectedItem();
            Cursor c = myDatabase.rawQuery("SELECT initial FROM groups WHERE name = ?", new String[] {newGroup});
            c.moveToFirst();
            Log.i("EditHelpingDialog", "initial " + c.getInt(0));
            contentValues.put("name", foodName);
            contentValues.put("serving", etServing.getText().toString());
            contentValues.put("calories", etCalories.getText().toString());
            contentValues.put("group", (byte) c.getInt(0));

1 Ответ

0 голосов
/ 01 декабря 2019

GROUP - это КЛЮЧЕВОЕ СЛОВО, и, следовательно, без выхода из него могут возникнуть проблемы;такой как синтаксическая ошибка, которую вы получили.

Лучше не использовать ключевые слова для имен / идентификаторов сущностей (столбцы, таблицы, триггеры и т. Д.). В противном случае, в некоторых ситуациях вам придется сбежать (заключить имя в один из [], ``, "" или '').

...