2012-11-27 17 views
0

我已經在我的SQLite數據庫中創建一個視圖,它包含兩個_id列,並通過此語句創建的其他一些信息:沒有這樣的列:_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 

它真的難倒我,我不知道我要去的地方錯了。任何幫助?

+0

您可以在視圖中對其進行重命名:CREATE VIEW .. AS SELECT JourneyProfile._id AS _id,...,ContactsProfiles._id AS contacts_id,..',其中AS是可選的。具有可以現在引用它們的優點。 – zapl

+0

您是否更改過架構?通常,設計人員會更改包含SQL CREATE代碼的Java String,但忘記更新SQLiteDatabase模式......並且您正在使用「CREATE VIEW IF NOT EXISTS」,是否更改VIEW並忘記刪除舊的? – Sam

+0

是的,我已經重新啓動/擦拭/清理等模擬器很多次。它是第一次創建視圖,並在同一運行中顯示錯誤。我會嘗試重命名它們。 – Demonofloom

回答

0

問題在於使用舊視圖。我強制我的視圖在表結構發生變化時重新創建,並且已經解決了它。

相關問題