2017-09-24 41 views
0

我已經在網上搜索這個問題,但無法得到任何工作響應。 我相信這是來自選擇,但我不知道它有什麼問題。sqlite.SQLiteException:沒有這樣的列:data1(Sqlite代碼1):

我得到這個錯誤:
android.database.sqlite.SQLiteException: no such column: data1 (Sqlite code 1): , while compiling: SELECT sort_key, photo_uri ...

執行此代碼來獲取手機中的聯繫人後:

Uri uri = ContactsContract.Contacts.CONTENT_URI; 
    String no07 = "%07"; 
    String no407 = "%+407"; 

    String selection = "((" + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " NOTNULL) AND (" 
      + ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1) AND (" 
      + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " != '') AND ((" 
      + ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + no07 + "') OR (" 
      + ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + no407 + "')))"; 

    Cursor phones = getActivity() 
      .getContentResolver() 
      .query(uri, null, selection, null, null); 

我希望得到任何幫助。

+0

嘗試調試/記錄您的整個選擇語句。我的猜測是你正在做一個列表選擇,它不在被查詢的表格中。 – ADimaano

+0

添加LIKE行後,我一直有這個問題 –

+0

如果你真的需要LIKE行,那沒問題。但是,如果您將記錄整個選擇語句,它將非常有幫助。然後,您可以在數據庫服務器上手動運行該選擇語句,然後您將看到錯誤的位置。編輯您的問題併發布選擇語句日誌。 – ADimaano

回答

1

根據你的錯誤,你正在查詢的URI沒有這樣的列data1。包含在selection中的ContactsContract.CommonDataKinds.Phone.NUMBER列應該引起異常。 你可能想從ContactsContract查詢不同的表是ContactsContract.Data,截至the overview from the ContactsContract

表示在ContactsContract.Data表中的一行可以在任何類型的個人數據,存儲的諸如電話號碼或電子郵件地址。

相關問題