Autore Topic: Piccolo problema database  (Letto 545 volte)

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Piccolo problema database
« il: 18 Ottobre 2011, 11:05:51 CEST »
0
Ciao ragazzi ho questo piccolo problema...
ho il mio database e voglio sapere se ci sono elementi o se è vuoto.... eseguo quindila seguente query:

1. public boolean ditteExist(){
2. String count = "SELECT count(*) FROM "+DITTA_TABLE;
3.  Cursor mcursor = db.rawQuery(count, null);       
4.        int icount=mcursor.getInt(0);
5.        return icount > 0;
   }

ma quando eseguo il tutto mi da un errore nella riga 4;
sapete dirmi il perchè?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Piccolo problema database
« Risposta #1 il: 18 Ottobre 2011, 11:50:56 CEST »
+1
prima di fare il getInt devi chiamare il metodo moveToFirst ;)

PS: quando posti codice usa il tag

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Piccolo problema database
« Risposta #2 il: 18 Ottobre 2011, 11:53:08 CEST »
0
Grazie mille  :-)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Piccolo problema database
« Risposta #3 il: 18 Ottobre 2011, 12:03:00 CEST »
0
per contare le righe si usa un metodo diverso
SQLite Query in Android to count rows - Stack Overflow


Citazione
SQLiteStatement s = mDb.compileStatement(select count(*) from users where uname='"+loginname+ "' and pwd='"+loginpass+"');";

long count = s.simpleQueryForLong();
« Ultima modifica: 18 Ottobre 2011, 12:07:56 CEST da Nicola_D »
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Piccolo problema database
« Risposta #4 il: 18 Ottobre 2011, 13:52:54 CEST »
+1
per contare le righe si usa un metodo diverso
SQLite Query in Android to count rows - Stack Overflow



Non mi sembra un'ottima soluzione.
Compilare la query ha senso se poi devi riutilizzarla, ad esempio in un ciclo, e in ogni caso devi fargli il bind dei parametri non crearla in quel modo...

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Piccolo problema database
« Risposta #5 il: 18 Ottobre 2011, 18:34:28 CEST »
0
Il metodo più semplice che mi viene in mente leggendo il tuo codice è questo:

Codice (Java): [Seleziona]
public boolean ditteExist(){
   String count = "SELECT * FROM "+DITTA_TABLE;
   Cursor mcursor = db.rawQuery(count, null);
   return mcursor.moveToNext();
}

Secondo la documentazione ufficiale:

Citazione
public abstract boolean moveToNext ()    Since: API Level 1

Move the cursor to the next row.
This method will return false if the cursor is already past the last entry in the result set.

Returns whether the move succeeded.
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker