Autore Topic: Problema UPDATE DB  (Letto 793 volte)

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Problema UPDATE DB
« il: 18 Ottobre 2010, 12:24:36 CEST »
0
Ciao ragazzi, ho un problama con l'update del DB, ogni volta che provo a farlo mi da questo errore:

android.database.sqlite.SQLiteException: near "cane": syntax error: , while compiling: UPDATE usemode SET c=?, b=?, a=?, d=? WHERE nome=cane

Questo è il codice per ho scritto per l'update della tabbella.

Praticamente, dato l'oggetto che gli passo voglio aggiornare la corrispondente tupla del nome dell'oggetto.

Codice: [Seleziona]
public void updateRow(Context ctx, MyObject o){
            ContentValues args = new ContentValues();
            try{
                     
                     args.put("a", o.getA());
                     args.put("b", o.getB());
                     args.put("c", o.getC());
                     args.put("d", o.getD());
                     //db.update("prova", args, "nome"+"="+o.getNome(),null);
                     db.update("prova", args, "nome=?",new String[]{"a","b","c","d"});
            }
            catch (Exception e) {
                        e.printStackTrace();
                }

Help me plese!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema UPDATE DB
« Risposta #1 il: 18 Ottobre 2010, 12:35:52 CEST »
0
Codice (Java): [Seleziona]
db.update("prova", args, "nome"+"=\""+o.getNome()+"\"",null);

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Problema UPDATE DB
« Risposta #2 il: 18 Ottobre 2010, 13:39:56 CEST »
0
Codice (Java): [Seleziona]
db.update("prova", args, "nome"+"=\""+o.getNome()+"\"",null);

Scusa, ora non mi da più errore, ma quando faccio la query la tabella non mi viene aggiornata. Cioè forse viene fatto, ma quando vado a fare la query sulla tabella per prendere nuovamente quella riga mi ritorna i valori non aggiornati!!

Possibile che sbaglio a fare la query?

A me sembra tutto corretto...

Codice: [Seleziona]
public Cursor singleQuery(String g){
            try{
            Cursor c= db.query("prova", null, "nome=?", new String[] {g}, null, null, null);
            if( c.moveToFirst()) return c;
            }
            catch (Exception e) {
                        // TODO: handle exception
                    e.printStackTrace();
                }
            return null;
    }

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:Problema UPDATE DB
« Risposta #3 il: 21 Ottobre 2010, 08:41:19 CEST »
0
mist3r0, potresti scrivere a mano la query di update che vorresti ottenere?

Perchè tra prima e seconda versione del codice vedo qualche differenza e non è ben chiaro cosa vuoi veramente ottenere.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Problema UPDATE DB
« Risposta #4 il: 22 Ottobre 2010, 00:11:15 CEST »
0
Grazie bradipo, ma ho risolto proprio oggi!! :D

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Problema UPDATE DB
« Risposta #5 il: 22 Ottobre 2010, 00:16:52 CEST »
0
Ho Pensato che possa servire a tutti, quindi posto di seguito come ho risolto il mio problema:

Una cosa che non sapevo è che SQLite non supporta i tipi booleani.

Quindi affinchè l'update e l'inserimento di una tupla punzionasse ho dovuto fare tutto tramite stringhe!! ;)

Posto il codice di come ho fatto l'update:

Codice: [Seleziona]
args.put("a", "" + o.getA());
db.update("prova", args, "nome=?",new String[] {o.getNome()});

PS: o.getA() ritorna un tipo Booleano!!

GRINGRAZIO TUTTI PER L'AIUTO A PRESTO!!  8-)