2017-04-22 3 views
0

Ich habe einen ContentProvider und möchte eine Abfrage erstellen, die die Zeilen einer Tabelle zurückgibt, in der die Werte einer bestimmten Spalte nicht null sind. In SQL können Sie die column IS NOT NULL verwenden, aber ich kann nicht herausfinden, was die äquivalente Aussage im Fall von ContentProviders ist.Wie Abfrage eines ContentProvider für Wert, der auf Android nicht null ist?

Ich habe bisher versucht:

  1. SQL-ähnliche Syntax.

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " is not null", 
         null, 
         null); 
    
  2. SQL-Syntax wie mit Auswahl Argumenten.

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " is not null", 
         new String[0], 
         null); 
    
  3. Ist auf gleich mit echtem null Wert.

    getContentProvider().query(uri, 
         null, 
         Contract.Table.COLUMN + " != ?", 
         new String[]{null}, 
         null); 
    
  4. Ist das nicht mit "null" Zeichenfolge gleich.

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

Vielen Dank!

+1

Fragen Sie, wer auch immer den 'ContentProvider' geschrieben hat. Es liegt am Autor des 'ContentProvider', wie die an query() übergebenen Parameter interpretiert werden. Für einen 'ContentProvider', der seine Daten in SQLite speichert, würde ich erwarten, dass Ihre erste Syntax einen ordentlichen Schuss am Arbeiten hat, aber das ist nicht garantiert. – CommonsWare

+1

und versuchen Sie "ist nicht null", nicht "ist nicht null", beachten Sie den führenden Platz – pskink

+0

@pskink Danke, es war ein Tippfehler. Ich habe Platz in meinem Code. –

Antwort

1

ContentProvider s sind nicht standardisiert. Jeder von ihnen kann Abfrageparameter in irgendeiner gegebenen Weise interpretieren. (Tatsächlich verwenden die meisten Inhaltsanbieter nur einige wenige Parameter.)

Verwandte Themen