Android 没有这样的列:_id:,但有

Android 没有这样的列:_id:,但有,android,sqlite,Android,Sqlite,我已经在我的SQLite数据库中创建了一个视图,它包含两个_id列以及由该语句创建的一些其他信息: CREATE VIEW IF NOT EXISTS journeyProfileContactsView AS SELECT JourneyProfile._id, JourneyProfile.TITLE, ContactsProfiles._id, ContactsProfiles.NAME, ContactsProfiles.NUMBER FROM ProfileToContacts INN

我已经在我的SQLite数据库中创建了一个视图,它包含两个_id列以及由该语句创建的一些其他信息:

CREATE VIEW IF NOT EXISTS journeyProfileContactsView AS SELECT JourneyProfile._id, JourneyProfile.TITLE, ContactsProfiles._id, ContactsProfiles.NAME, ContactsProfiles.NUMBER FROM ProfileToContacts INNER JOIN JourneyProfile ON ContactsProfiles._id=ProfileToContacts.contactID INNER JOIN ContactsProfiles ON JourneyProfile._id=ProfileToContacts.profileID
一段时间以来,我一直在与这个错误作斗争:

11-27 19:30:04.686: E/AndroidRuntime(12946): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT * FROM journeyProfileContactsView WHERE _id=1
我确信该列确实存在,我已经在SQLite管理器中打开了视图,可以确认该列作为_id存在(另一列为_id:1),尽管检查光标表明它实际上可能是JourneyProfile。_id

我试过:

"JourneyProfile._id=" + id
"_id=" + id

这真的让我很难堪,我不知道我会错在哪里。有什么帮助吗?

问题在于使用旧视图。我强制重新创建视图,因为表结构已更改,这已解决问题。

您可以在视图中重命名它们:
CREATE view。。选择JourneyProfile._id作为_id,…,contacts Profiles._id作为contacts _id,…
,其中
作为
是可选的。这样做的好处是您现在可以同时引用它们。您是否更改了架构?设计人员经常更改包含SQL
CREATE
代码的Java字符串,但忘记了更新SQLiteDatabase模式。。。此外,如果不存在,您正在使用
创建视图
,您是否更改了视图并忘记删除旧视图?是的,我已多次重新启动/擦拭/清洁模拟器。它是第一次创建视图,在同一次运行中显示错误。我将尝试重命名它们。