Autore Topic: ifexist tupla in sqlite gestito con ContentProvider  (Letto 678 volte)

Offline ozzem

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
ifexist tupla in sqlite gestito con ContentProvider
« il: 03 Novembre 2012, 13:50:58 CET »
0
Salve, sto in pratica rifacendo tutta la gestione del database sqlite causa il deprecamento del metodo startmanagingcursor..
ho seguito il tutorial pubblicato nella sezione apposita e sono riuscito a rifare quasi tutte le mie funzioni.
al momento..la più stupida forse...non mi è chiara come farla.

in pratica, con la vecchia gestione facevo una cosa del genere..

Codice (Java): [Seleziona]
public boolean exist(long uid){
         boolean ex = false;
         
         Cursor c= db.rawQuery("SELECT COUNT(*) FROM " + Person.PERSON_TABLE + " WHERE uid = "+ "'" + uid + "'", null);
                c.moveToFirst();
      int jcount = c.getInt(0);
 
      if (jcount >0){
                ex=true;                       
        }
         return ex;
 }

ovvero mi contavo il numero di occorrenze scorrendo il db..sicuramente un metodo non ottimizzato..ma funzionante.

ora non capisco come sfruttare il metodo query del mio contentprovider..

qualcuno mi può fornire qualche indicazione?
grazie mille.


Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:ifexist tupla in sqlite gestito con ContentProvider
« Risposta #1 il: 03 Novembre 2012, 15:48:12 CET »
0
Basta che usi la "query" del ContentResolver ti ritorna un Cursor:

ContentResolver | Android Developers

La query SQL che hai postato è poco efficiente, SQLite supporta l'operatore "EXISTS" più veloce del "COUNT (*)".




adb logcat | tee /tmp/logcat | grep TAG

Offline ozzem

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
Re:ifexist tupla in sqlite gestito con ContentProvider
« Risposta #2 il: 03 Novembre 2012, 15:59:20 CET »
0
mmm..non riesco a l'operatore Exists di cui parli nella documentazione..non saprei come usarlo

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:ifexist tupla in sqlite gestito con ContentProvider
« Risposta #3 il: 03 Novembre 2012, 17:08:21 CET »
+1
In linea generale la query è questa bisogna solo adattarla:

Codice: [Seleziona]
SELECT EXISTS(SELECT 1 FROM table WHERE column = 'value' LIMIT 1);
ritorna 0 o 1 se non esiste o esiste.

La documentazione ufficiale è questa:

SQLite Query Language: expression
adb logcat | tee /tmp/logcat | grep TAG