He creado una vista personalizada en una base de datos SQLite para una aplicación de Android.
Estoy usando Sqliteman en Ubuntu para probar mis declaraciones SQL antes de ponerlas en mi aplicación.
Estoy tratando de hacer una simple declaración de selección en mi vista.
La instrucción select funciona bien en SQLiteman, pero cuando pongo la misma instrucción en mi código, arroja un error.SQLite para vista de tabla personalizada de Android (vista SQL, no vista de Android) discrepancia?
La declaración:
select * from item_view where parent_item_id = 0;
La vista (convertido a Java como un String):
"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"
El error:
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
primera vez que trató de llamar al elemento de campo. parent_item_id en mi declaración seleccionada, pero eso no funcionó.
Luego saqué el db y lo abrí con Sqliteman.
Los campos se enumeraron como estaban en las tablas originales (_id, estado, nombre, etc.)
Así que ejecuté el SQL anterior en Sqliteman y pude recuperar los datos apropiados sin problema, pero no puedo obtenerlo para trabajar en mi aplicación de cualquier manera.
También noté que abandonar la vista como un comando DROP TABLE funcionaba en SQLiteman pero no en mi aplicación.
Me pregunto si es posible que me falte alguna otra funcionalidad específica de VIEW.
No vi ninguno en la documentación de Android ni en ninguna documentación de SQL.
Técnicamente podría hacer esto con una llamada SQL más compleja utilizando las tablas originales, pero todas mis tablas siguen ciertas pautas para que pueda generar dinámicamente llamadas SQL. Me gustaría que las tablas de vistas funcionen para mantener mi código uniforme y siempre reutilizando las mismas llamadas para evitar el mantenimiento y otros problemas de errores del código duplicado.
¡No puedo hacer hincapié en lo mucho que me ha ayudado! Me he estado arrancando el pelo durante dos horas tratando de descubrir por qué el maldito androide no puede encontrar la columna que * absulutely * existe. – Valentin