E / SQLiteLog: (1) около «All»: синтаксическая ошибка - PullRequest
0 голосов
/ 18 декабря 2018

Я новичок в разработке приложений, и я пытаюсь создать приложение, которое ищет таблицу базы данных с именем «Все», но продолжает получать эту ошибку:

E / SQLiteLog: (1) рядом с «Все»: синтаксическая ошибка

Код ошибки: 1 (SQLITE_ERROR) Причина: ошибка SQL (запроса) или отсутствует база данных.(рядом с «Все»: синтаксическая ошибка (код 1): во время компиляции: SELECT Phrase FROM All)

Я думаю, что это должно быть проблемой с моей настройкой базы данных, но я не могу найти ошибку.

Вот мой код:

public class Database extends SQLiteAssetHelper {
    private static final String DB_NAME="DoYouGetMeDoc.db";
    private static final int DB_VER=1;
    public Database(Context context) {
        super(context, DB_NAME, null, DB_VER);
    }

    public List<Items> getall(){
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        String[] sqliteSelect={"Phrase","Description","Example", "Chapter"};
        String tableName="All";
        qb.setTables(tableName);
        Cursor cursor = qb.query(db,sqliteSelect,null,null,null,null,null);
        List<Items> results = new ArrayList<>();
        if (cursor.moveToFirst()){
            do {
                Items items = new Items();
                items.setPhrase(cursor.getString(cursor.getColumnIndex("Phrase")));
                items.setDescription(cursor.getString(cursor.getColumnIndex("Description")));
                items.setExample(cursor.getString(cursor.getColumnIndex("Example")));
                items.setChapter(cursor.getString(cursor.getColumnIndex("Chapter")));
                results.add(items);
            }while (cursor.moveToNext());
        }
        return results;
    }

    public List<String> getPhrases(){
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        String[] sqliteSelect={"Phrase"};
        String tableName="All";
        qb.setTables(tableName);
        Cursor cursor = qb.query(db,sqliteSelect,null,null,null,null,null);
        List<String> results = new ArrayList<>();
        if (cursor.moveToFirst()){
            do {
                results.add(cursor.getString(cursor.getColumnIndex("Phrase")));
            }while (cursor.moveToNext());
        }
        return results;

    }

    public List<Items> getPhrasesbyPhrase(String phrase)
    {
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        String[] sqliteSelect={"Phrase","Description","Example","Chapter"};
        String tableName="All";
        qb.setTables(tableName);
        Cursor cursor = qb.query(db,sqliteSelect,"Phrase like ?",new String[]{"%"+phrase+"%"},null,null,null);
        List<Items> results = new ArrayList<>();
        if (cursor.moveToFirst()){
            do {
                Items items = new Items();
                items.setPhrase(cursor.getString(cursor.getColumnIndex("Phrase")));
                items.setDescription(cursor.getString(cursor.getColumnIndex("Description")));
                items.setExample(cursor.getString(cursor.getColumnIndex("Example")));
                items.setChapter(cursor.getString(cursor.getColumnIndex("Chapter")));
                results.add(items);
            }while (cursor.moveToNext());
        }
        return results;
    } }

Короче говоря, мое приложение должно позволять пользователю выполнять поиск в базе данных с помощью панели поиска, которую я настроил в своем файле MainActivity.xml, но каждый раз, когда я пытаюсьи откройте приложение, которое продолжает сбой.

Я полностью озадачен и был бы очень признателен за некоторые советы.

Обновление: я изменил имя таблицы с "All" на "FullBook" и теперь получаю эту ошибку:

E/SQLiteLog: (1) no such table: FullBook

1 Ответ

0 голосов
/ 18 декабря 2018

ALL - ключевое слово (зарезервированное слово) для SQLite и всех (я считаю) rdmsи вы не можете использовать его в качестве имени таблицы.Здесь вы можете увидеть все зарезервированные слова SQLite:https://www.sqlite.org/lang_keywords.htmlЕсли вы настаиваете на его использовании, вы можете заключить его в квадратные скобки, например [All].

...