2017-04-22 21 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不是标准化的。它们中的每一个都可以以任何给定的方式解释查询参数。 (实际上,大多数内容提供商只使用几个参数。)

相关问题