Autore Topic: Crash elimina record  (Letto 581 volte)

Offline JCC

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
Crash elimina record
« il: 08 Ottobre 2013, 10:57:58 CEST »
0
in una tabella SQLite ho un elenco di stringhe che visualizzo in una listview e tramite button posso eliminare ogni singolo record.

Però se ad esempio nel record e scritta la parola " caffè " tutto funziona bene, se invece è scritta la parola " caffe' " l'app và in crash perchè??
Grazie

Codice (Java): [Seleziona]
String nome = tv.getText().toString();
                SQLiteDatabase db = mHelper.getWritableDatabase();
                db.delete(NomeTable.TABLE_NAME, NomeTable.NOME_CAT + "='" + nome_cat + "'", null);
                db.close();
                finish();

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:Crash elimina record
« Risposta #1 il: 08 Ottobre 2013, 11:14:06 CEST »
0
Se provi a scrivere (anche a meno) la stringa della condizione te ne rendi immediatamente conto.  :-)

Prova con caffe'' (caffe seguito da due singoli-apici, che è un modo di fare escape del singolo-apice).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline JCC

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
Re:Crash elimina record
« Risposta #2 il: 08 Ottobre 2013, 11:22:10 CEST »
0
Si ma non posso dire a chi utilizza l'app di fare così, ci deve essere un modo no??


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:Crash elimina record
« Risposta #3 il: 08 Ottobre 2013, 11:42:07 CEST »
0
Si ma non posso dire a chi utilizza l'app di fare così, ci deve essere un modo no??

Il modo è che devi fare escaping dei singoli-apici nella stringa. Per esempio raddoppiandoli.

Domanda numero 14 della FAQ di SQLite: http://www.sqlite.org/faq.html#q14
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline JCC

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
Re:Crash elimina record
« Risposta #4 il: 08 Ottobre 2013, 11:45:30 CEST »
0
ok grazie

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:Crash elimina record
« Risposta #5 il: 08 Ottobre 2013, 11:48:39 CEST »
0
Si ma non posso dire a chi utilizza l'app di fare così, ci deve essere un modo no??
esiste il patternMatching (regular expression), lo String.replace e il fare in modo che l'utente NON Possa inserire caratteri particolari.
oltretutto il terzo parametro che hai a null, deve essere riempito con gli argomenti (nome_cat nel tuo caso).

Android SQLite Delete Row From Table Where 2 Arguments - Stack Overflow
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 JCC

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
Re:Crash elimina record
« Risposta #6 il: 08 Ottobre 2013, 12:03:35 CEST »
0
ho fatto così e sembra funzionare bene

Codice (Java): [Seleziona]
db.delete(NomeTable.TABLE_NAME, NomeTable.NOME_CAT + "= ?", new String[]{nome_cat});
può essere un modo corretto??

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:Crash elimina record
« Risposta #7 il: 08 Ottobre 2013, 12:32:39 CEST »
0
ho fatto così e sembra funzionare bene

Codice (Java): [Seleziona]
db.delete(NomeTable.TABLE_NAME, NomeTable.NOME_CAT + "= ?", new String[]{nome_cat});
può essere un modo corretto??
si, è quello corretto. Dovrebbe arrangiarsi lui a fare l'escaping dei caratteri
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