Autore Topic: rawQuery() non restituisce risultati  (Letto 1018 volte)

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
rawQuery() non restituisce risultati
« il: 10 Agosto 2011, 02:11:47 CEST »
0
Ciao a tutti,
facendo delle prove usando un semplice 'SELECT * FROM table' tramite rawQuery() ho notato che non vengono restituiti i record corrispondenti, getCount() sta a 0 mentre i nomi delle varie colonne vengono comunque riconosciute...
Siccome dovrei usare per forza rawQuery per ottenere i risultati del SELECT, secondo voi come mai non funziona? Premetto che tramite l'altra funzione (di cui non ricordo il nome al momento :D) i dati vengono comunque estratti quindi problemi al db dovrebbero essere esclusi...
Non mi pare vengano riportati errori nel logcat, l'applicazione viene eseguita correttamente :(

Grazie mille in anticipo :)

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:rawQuery() non restituisce risultati
« Risposta #1 il: 10 Agosto 2011, 08:57:07 CEST »
0
Ciao a tutti,
facendo delle prove usando un semplice 'SELECT * FROM table' tramite rawQuery() ho notato che non vengono restituiti i record corrispondenti, getCount() sta a 0 mentre i nomi delle varie colonne vengono comunque riconosciute...
Siccome dovrei usare per forza rawQuery per ottenere i risultati del SELECT, secondo voi come mai non funziona? Premetto che tramite l'altra funzione (di cui non ricordo il nome al momento :D) i dati vengono comunque estratti quindi problemi al db dovrebbero essere esclusi...
Non mi pare vengano riportati errori nel logcat, l'applicazione viene eseguita correttamente :(

Grazie mille in anticipo :)
scrivi qui la riga di codice esatta di come fai la raw query,sicuramente c'è qualche errore di battitura
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 bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:rawQuery() non restituisce risultati
« Risposta #2 il: 10 Agosto 2011, 09:28:15 CEST »
0
Mi accodo al consiglio di Nicola. Molto spesso conviene far stampare la query nel Log, copiarla e provarla in un qualche sqlite_manager. Si risparmia moltissimo tempo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:rawQuery() non restituisce risultati
« Risposta #3 il: 10 Agosto 2011, 09:50:00 CEST »
0
La riga esatta della query e'
Codice (Java): [Seleziona]
Cursor result   =       this.myDataBase.rawQuery( "SELECT * FROM gelati" , null);
result.moveToFirst();
System.out.println( "++++++++++++++++++++" );
System.out.println( "COUNT: " + result.getColumnCount() + "/" + result.getCount() );
for( int x = 0; x < result.getCount(); x++ )
{
        result.moveToNext();
        System.out.println( "++++++++++++++++++++" );
        //for ( int y = 0; y < result.getColumnCount(); x++ )
               System.out.println( "- Result:" + result.getColumnName( 0 ) );
}
//e chiude il DB
this.myDataBase.close();       

L'output riportato e'
Codice: [Seleziona]
I/System.out(  442): ++++++++++++++++++++
I/System.out(  442): COUNT: 3/0
In cui 3 e' il numero di campi e 0 sono le selezioni  :'(

Che sqlite_manager consigliate? :D Io adopero sqlitebrowser ma mi sembra tutt'altro che comodo :D

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:rawQuery() non restituisce risultati
« Risposta #4 il: 10 Agosto 2011, 09:56:28 CEST »
0
ma sei sicuro che ci siano dati nella tabella gelati? esporta il db e prova con quel software che hai menzionato (per me è molto comodo)
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 ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:rawQuery() non restituisce risultati
« Risposta #5 il: 10 Agosto 2011, 10:46:16 CEST »
0
ma sei sicuro che ci siano dati nella tabella gelati? esporta il db e prova con quel software che hai menzionato (per me è molto comodo)
Sicurissimo, tanto che con
Codice: [Seleziona]
Cursor result = this.myDataBase.query( "gelati" , new String[] {} , null , null, null, null, null);Riesco a vedere tutto!  :-\

C'entra qualcosa la versione di android nell'emulatore, secondo te?

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:rawQuery() non restituisce risultati
« Risposta #6 il: 10 Agosto 2011, 11:01:24 CEST »
0
prova a chiamare startManagingCursor prima del primo movetoFirst
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 ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:rawQuery() non restituisce risultati
« Risposta #7 il: 10 Agosto 2011, 19:41:15 CEST »
0
prova a chiamare startManagingCursor prima del primo movetoFirst
Come dovrei fare scusa? Ho provato ma non e' una funzione del Cursore che eclipse mi consiglia :/

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:rawQuery() non restituisce risultati
« Risposta #8 il: 11 Agosto 2011, 08:59:43 CEST »
0
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 Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Re:rawQuery() non restituisce risultati
« Risposta #9 il: 11 Agosto 2011, 09:11:46 CEST »
0
Come dovrei fare scusa? Ho provato ma non e' una funzione del Cursore che eclipse mi consiglia :/

Codice (Java): [Seleziona]
Cursor result   =       this.myDataBase.rawQuery( "SELECT * FROM gelati" , null);
startManagingCursor(result);
result.moveToFirst();

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:rawQuery() non restituisce risultati
« Risposta #10 il: 11 Agosto 2011, 18:27:08 CEST »
0
Codice (Java): [Seleziona]
Cursor result   =       this.myDataBase.rawQuery( "SELECT * FROM gelati" , null);
startManagingCursor(result);
result.moveToFirst();
Ho provato proprio cosi' ma Eclipse mi avvisa che non e' una funzione riconosciuta e mi restituisce errore.
Piuttosto ho risolto per caso proprio poco fa: prima effettuavo la chiusura del DB poco dopo aver assegnato a result il valore di this.myDataBase.rawQuery( "SELECT * FROM gelati" , null);.
Ora ho messo la chiusura del DB proprio poco prima del return finale e tutto funziona a meraviglia  :-\ Mi chiedo ancora perche' si comportasse cosi'...

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:rawQuery() non restituisce risultati
« Risposta #11 il: 11 Agosto 2011, 18:56:57 CEST »
0
Ho provato proprio cosi' ma Eclipse mi avvisa che non e' una funzione riconosciuta e mi restituisce errore.
Piuttosto ho risolto per caso proprio poco fa: prima effettuavo la chiusura del DB poco dopo aver assegnato a result il valore di this.myDataBase.rawQuery( "SELECT * FROM gelati" , null);.
Ora ho messo la chiusura del DB proprio poco prima del return finale e tutto funziona a meraviglia  :-\ Mi chiedo ancora perche' si comportasse cosi'...
perchè se chiudi il db prima di prendere i dati dal cursor, perdi anche i dati :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