2017-04-22 18 views
0

我有一個ContentProvider,我想進行一個查詢,該查詢返回特定列的值不爲null的表的行。在SQL中,您可以使用column IS NOT NULL,但我無法弄清楚ContentProviders的等效語句。如何在Android上查詢ContentProvider的值不爲空?

到目前爲止我試過:

  1. SQL的語法。

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " is not null", 
         null, 
         null); 
    
  2. SQL像選擇參數的語法。

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " is not null", 
         new String[0], 
         null); 
    
  3. 是等於用實際null價值。

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " != ?", 
         new String[]{null}, 
         null); 
    
  4. 不等於"null"字符串。

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " != ?", 
         new String[]{"null"}, 
         null); 
    

謝謝!

+1

詢問編寫ContentProvider的人。這取決於ContentProvider的作者如何解釋傳遞給query()的參數。對於在SQLite中存儲其數據的'ContentProvider',我希望你的第一個語法在工作時有一個體面的鏡頭,但這並不能保證。 – CommonsWare

+1

並嘗試「不爲空」,而不是「不爲空」,注意前導空間 – pskink

+0

@pskink謝謝,這是一個錯字。我的代碼中有空間。 –

回答

1

ContentProvider s不是標準化的。它們中的每一個都可以以任何給定的方式解釋查詢參數。 (實際上,大多數內容提供商只使用幾個參數。)

相關問題