Я создал пользовательское представление в базе данных SQLite для приложения Android.
Я использую Sqliteman в Ubuntu для проверки своих операторов SQL, прежде чем помещать их в свое приложение.
Я пытаюсьсделайте простой оператор select на мой взгляд.
Оператор select прекрасно работает в SQLiteman, но когда я помещаю в мой код то же выражение, оно выдает ошибку.
Оператор:
select * from item_view where parent_item_id = 0;
Представление (преобразованное в Java в виде строки):
"create view if not exists item_view as select " +
"item._id, item.status, item.name, item.position, " +
"item.parent_item_id, item.note_id, item.other_id, " +
"note.contents, other.priority " +
"from item, note, other where item.note_id = note._id and item.other_id = other._id"
Ошибка:
07-16 14:21:15.153: ERROR/AndroidRuntime(5054): Caused by: android.database.sqlite.SQLiteException: no such column: parent_item_id: , while compiling: SELECT * FROM item_view WHERE parent_item_id = 0
Сначала я попытался вызвать поле item.parent_item_id в своем операторе select, но это не сработало.
Затем я извлек базу данных и открыл ее с помощью Sqliteman.
Поля были перечислены в том виде, в котором они были в исходных таблицах_id, status, name и т. д.)
Так что я запустил SQL выше в Sqliteman и смог без проблем получить соответствующие данные, но я не могу заставить его работать в моем приложении в любом случае.
Я такжезаметил, что удаление представления как команды DROP TABLE работает в SQLiteman, но не в моем приложении.
Мне интересно, возможно, мне не хватает какой-то другой специфической функции VIEW.
Я не видел ни одной из нихДокументация Android или любая документация SQL, хотя.
Технически я мог бы просто сделать это с более сложным вызовом SQL с использованием исходных таблиц, но все мои таблицы следуют определенным рекомендациям, чтобы я мог динамически генерировать вызовы SQL.Мне бы хотелось, чтобы таблицы представлений работали так, чтобы мой код работал единообразно и всегда использовал одни и те же вызовы, чтобы избежать обслуживания и других проблем, связанных с дублированием кода.