Autore Topic: SQLite Null se campo vuoto  (Letto 888 volte)

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
SQLite Null se campo vuoto
« il: 20 Agosto 2013, 21:20:35 CEST »
0
Ciao, ho una tabella con 4 campi, in una activity ho l'opportunità di inserire i dati ma potendo lasciare alcuni campi vuoti....
Dopo avere fatto una select se in uno o più campi non sono stati inseriti i valori in uscita (nelle textview corrispondenti ai campi vuoti) ho come valore "Null".
E' possibile fare in modo che se il campo è vuoto non venga inserito nella query???o qualsiasi altra soluzione......Grazie

Offline matttt

Re:SQLite Null se campo vuoto
« Risposta #1 il: 20 Agosto 2013, 21:28:24 CEST »
0
Non mi è chiarissimo il problema, forse dovresti postare qualche riga di codice per capire meglio.
Eventualmente puoi usare rawQuery e comporre la query come vuoi tu (con i campi che ti servono che siano NULL o meno) creando opportunamente la stringa per la query.
Le mie apps su Google Play Store:

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:SQLite Null se campo vuoto
« Risposta #2 il: 20 Agosto 2013, 21:34:08 CEST »
0
Questa è la query che stò utilizzando, ad esempio se il campo Note è vuoto nella textview corrispondente ho come uscita Null.
Codice (Java): [Seleziona]
String sql = "SELECT _Id,Data,Note,Entrata FROM Tabella WHERE entrata>0 AND data LIKE '"+anno+"-"+mese+"%'";Dovrei modificare la query dicendo che se il campo Note è vuoto non deve visualizzarlo???e come??
Grazie

Offline matttt

Re:SQLite Null se campo vuoto
« Risposta #3 il: 20 Agosto 2013, 21:39:14 CEST »
0
O sono io che non capisco oppure il problema è più semplice di quel che pensi :)
Non puoi comporre semplicemente la stringa facendo una cosa così ...
Codice (Java): [Seleziona]
String sql = "SELECT _Id, Data, ";
if( note != null ) sql += "Note, ";
sql += "Entrata FROM Tabella WHERE entrata>0";  // ...
?

(eventualmente se fai vari concatenamenti stringa sarebbe meglio passare a StringBuilder che è più efficiente)
Le mie apps su Google Play Store:

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:SQLite Null se campo vuoto
« Risposta #4 il: 20 Agosto 2013, 21:50:04 CEST »
0
Si hai capito il problema, non ho la query nell'Helper ma nell'activity e mi dà errore in note perchè non è una variabile    "if( note != null )"

Offline matttt

Re:SQLite Null se campo vuoto
« Risposta #5 il: 20 Agosto 2013, 22:00:02 CEST »
0
Ma... poi come gestisci i risultati della SELECT ?
In teoria così dovrebbe andare:
Codice (Java): [Seleziona]
Cursor result = db.rawQuery( "SELECT * FROM tabella" );
if( result.moveToFirst() && result.getString( 0 ) != null ) ;  // Aggiorna la textview
Le mie apps su Google Play Store:

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:SQLite Null se campo vuoto
« Risposta #6 il: 20 Agosto 2013, 22:03:04 CEST »
0
dopo la query li butto nelle textview così:
Codice: [Seleziona]
Cursor c = db.rawQuery(sql, null);
                       
                        while (c.moveToNext()){
                                Dettaglio d = new Dettaglio();
                                d.id = c.getInt(0);
                                d.data = c.getString(1);
                                d.note = c.getString(2);
                                d.uscite = c.getFloat(3);
.
.
.
.



Offline matttt

Re:SQLite Null se campo vuoto
« Risposta #7 il: 20 Agosto 2013, 22:07:28 CEST »
0
Vedi che bastava un po' di codice in più :)
Penso ti basti mettere:
Codice (Java): [Seleziona]
d.note = ( c.getString(2) != null ) ? c.getString(2) : "";
Le mie apps su Google Play Store:

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:SQLite Null se campo vuoto
« Risposta #8 il: 20 Agosto 2013, 22:13:59 CEST »
0
Perfetto, solamente che se vuoto mi scrive "note" invece dovrebbe essere vuoto....