CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Query in database sqlite

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiani Power User


    Registrato dal
    Jul 2012
    Messaggi
    19,917

    Ringraziamenti
    837
    Ringraziato 4,569 volte in 3,629 Posts
    Predefinito

    Query in database sqlite

    Salve ragazzi, sono un pò stranito da questo mio problema e chiedo proprio a voi che forse sapete dirmi dove sbaglio.
    Ho usato qualche volta il database sqlite in java e c#, ma ora che devo usarlo in android mi trovo in difficoltà (forse perchè è integrato).
    In pratica inserisco i dati nel database come spiegato in molte guide online e funziona, in quanto nel momento in cui prelevo tutti i dati insieme dal database ho tutti i dati belli che salvati, quando eseguo una query su una determinata colonna mi da errore dicendomi che c'è un errore nell'esecuzione della query in quanto la colonna cercata non esiste.
    Dato che inizialmente è vero che non esiste nessun problema, ma anche nel caso in cui esiste mi dice comunque che c'è lo stesso errore.
    Uso la riga di codice:
    Cursor c = db.query(true, TABELLA, COLONNE, NOME + "=" + nome, null, null, null, null, null);
    if (c != null) {
    c.moveToFirst();
    }
    return c;

    Le cose scritte in maiuscolo sono dei metadati che si riferiscono ai nomi reali (per forza giusti dato che li uso anche nella insert).
    L'errore potrebbe essere che faccio la ricerca su un elemento che non è ID?
    Come posso eseguire la query su un elemento che non è ID? ho anche provato a scrivere a mano la query (come facevo in java) scrivendo "SELECT * FROM utenti WHERE nome='" + nome + "'" e neanche questo funziona.
    Help me!!!!

  2.  
  3. #2
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da 13ciccio87 Visualizza il messaggio
    Salve ragazzi, sono un pò stranito da questo mio problema e chiedo proprio a voi che forse sapete dirmi dove sbaglio.
    Ho usato qualche volta il database sqlite in java e c#, ma ora che devo usarlo in android mi trovo in difficoltà (forse perchè è integrato).
    In pratica inserisco i dati nel database come spiegato in molte guide online e funziona, in quanto nel momento in cui prelevo tutti i dati insieme dal database ho tutti i dati belli che salvati, quando eseguo una query su una determinata colonna mi da errore dicendomi che c'è un errore nell'esecuzione della query in quanto la colonna cercata non esiste.
    Dato che inizialmente è vero che non esiste nessun problema, ma anche nel caso in cui esiste mi dice comunque che c'è lo stesso errore.
    Uso la riga di codice:
    Cursor c = db.query(true, TABELLA, COLONNE, NOME + "=" + nome, null, null, null, null, null);
    if (c != null) {
    c.moveToFirst();
    }
    return c;

    Le cose scritte in maiuscolo sono dei metadati che si riferiscono ai nomi reali (per forza giusti dato che li uso anche nella insert).
    L'errore potrebbe essere che faccio la ricerca su un elemento che non è ID?
    Come posso eseguire la query su un elemento che non è ID? ho anche provato a scrivere a mano la query (come facevo in java) scrivendo "SELECT * FROM utenti WHERE nome='" + nome + "'" e neanche questo funziona.
    Help me!!!!
    Ciao,

    quindi nel tentativo di reperire i dati con la query per memorizzarli in un Cursor (utilizzando il metodo .query della classe sqLiteDatabase) ti dice che la colonna non esiste? Eventualmente riesci a postare l'intero errore?
    E' possibile che nel momento in cui esegui la query il db sia vuoto.
    Sicuramente ad un certo punto del codice utilizzerai il metodo .getReadableDatabase() (della classe sqLiteHelper), attenzione perchè il metodo .getReadableDatabase(), se non trova un file sqlite presente all'apertura, ne crea uno vuoto ed è possibile che tu fai la select sul db vuoto, quindi sia la tabella sia la colonna indicata non sono esistenti.
    Per verificare se il db è vuoto puoi provare a fare una query sulla tabella 'android_metadata' (select * from android_metadata). Questa è una tabella di base che viene sempre creata di default alla creazione di un db sqlite android.
    Inoltre volevo consigliarti due metodi della classe sqLiteDatabase, a mio avviso più comodi per lavorare con sqlite, al posto di db.query(true, TABELLA, COLONNE, NOME + "=" + nome, null, null, null, null, null):

    Il metodo 'rawQuery', accetta due parametri e ritorna ugualmente un Cursor, la comodità è che accetta direttamente la stringa della query, es.
    codice:
    String sql = "SELECT * FROM utenti"; 
    Cursor c = sqLiteDatabase.rawQuery(sql, null);
    e il metodo .execSQL, per insert/update, es:
    codice:
    String sql = "INSERT INTO Utenti (_id, nome, cognome) VALUES (1, 'primo nome', 'primo cognome')";
    sqLiteDatabase.execSQL(sql);
    Prova comunque a postare parte integrante del codice in modo da poterlo analizzare
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy