我在一个
Android应用程序的sqlite数据库中创建了一个自定义视图.
我在Ubuntu上使用sqliteman来测试我的sql语句,然后再将它们放入我的应用程序中.
我正在尝试在我的视图上做一个简单的select语句.
select语句在sqliteman中运行正常但是当我在我的代码中放入相同的语句时会抛出错误.
我在Ubuntu上使用sqliteman来测试我的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
我首先尝试在我的select语句中调用字段item.parent_item_id,但这不起作用.
然后我拉出数据库并用sqliteman打开它.
这些字段列在原始表中(_id,status,name等)
所以我在sqliteman中运行了上面的sql,并且能够检索适当的数据没有问题,但我不能让它在我的应用程序中工作.
我还注意到删除视图作为DROP TABLE命令在sqliteman中工作但在我的应用程序中不起作用.
我想知道我是否可能缺少其他一些VIEW特定的功能.
我没有在android文档或任何sql文档中看到任何内容.
从技术上讲,我可以使用原始表进行更复杂的sql调用,但我的所有表都遵循某些指导原则,以便我可以动态生成sql调用.我希望视图表可以保持我的代码统一,并始终重复使用相同的调用,以避免重复代码中的维护和其他错误问题.
事实证明,您需要专门命名您正在创建的每个字段,以便android可以将其视为常规表.
解决方案…
解决方案…
"create view if not exists item_view as select " + "item._id as _id,item.status as item_status,item.name as item_name,item.position as item_position," + "item.parent_item_id as item_parent_item_id,item.note_id as item_note_id,item.other_id as item_other_id," + "note.contents as note_contents,other.priority as other_priority " + "from item,other where item.note_id = note._id and item.other_id = other._id"