fbcyborg
13-12-2009, 11:50
Salve a tutti,
non riesco a risolvere un problema che ho con delle tabelle aventi alcuni attributi che sono NULL come valore di default.
Ad esempio prendiamo questa tabella:
+----+------------+-------------+
| id | data | descrizione |
+----+------------+-------------+
| 1 | 2008-12-11 | 1 |
| 1 | NULL | 21321 |
| 10 | NULL | NULL |
Il campo id è un intero, data è di tipo date, che di default è NULL, e descrizione è una stringa (default NULL).
Se faccio un inserimento in questa tabella, ed alcuni campi li lascio a NULL non ci sono problemi. Ad esempio potrei voler non inserire una data, e magari inserirla in un momento successivo tramite una UPDATE, e qui il problema.
Utilizzo una classe DAO (quindi un approccio DAO - Classe Oggetto - Classe controller - GUI) per fare l'update, ed ecco il codice (è un estratto del metodo update che prende come parametro un oggetto di tipo Fattura) che mi da problemi:
int id=rs.getInt(1);
if (id==(fattura.getOldId()) &&
id!=(fattura.getId()))
updateId(fattura.getId(), fattura.getId());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(id!=(fattura.getOldId()))
// lancio eccezione dati modificati
}
Date dataEmis=rs.getDate(2);
if (dataEmis.equals(fattura.getOldDataEmis()) &&
!dataEmis.equals(fattura.getDataEmis()))
updateDataEmis(fattura.getId(), fattura.getDataEmis());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(!dataEmis.equals(fattura.getOldDataEmis()))
// lancio eccezione dati modificati
}
String desc=rs.getString(3);
if (desc.equals(fattura.getOldDesc()) &&
!desc.equals(fattura.getDesc()))
updateDesc(fattura.getId(), fattura.getDesc());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(!desc.equals(fattura.getOldDesc()))
// lancio eccezione dati modificati
}
Il problema è nell'equals fra date e fra String.
Infatti, se come parametro viene passato un NULL (preso dal database), l'equals s'incavola (giustamente).
Il problema è che io voglio che quei campi siano di default a NULL, e quindi ogni volta che aggiorno quei campi per la prima volta, ho questo problema mentre per aggiornamenti successivi (o comunque se quei campi sono diversi da NULL) non ci sono problemi, il meccanismo funziona perfettamente.
Per quanto riguarda le stringhe basta impostare che il valore di default sia "", ma per il campo data? Come risolvere?
Qualcuno mi sa aiutare per favore?
non riesco a risolvere un problema che ho con delle tabelle aventi alcuni attributi che sono NULL come valore di default.
Ad esempio prendiamo questa tabella:
+----+------------+-------------+
| id | data | descrizione |
+----+------------+-------------+
| 1 | 2008-12-11 | 1 |
| 1 | NULL | 21321 |
| 10 | NULL | NULL |
Il campo id è un intero, data è di tipo date, che di default è NULL, e descrizione è una stringa (default NULL).
Se faccio un inserimento in questa tabella, ed alcuni campi li lascio a NULL non ci sono problemi. Ad esempio potrei voler non inserire una data, e magari inserirla in un momento successivo tramite una UPDATE, e qui il problema.
Utilizzo una classe DAO (quindi un approccio DAO - Classe Oggetto - Classe controller - GUI) per fare l'update, ed ecco il codice (è un estratto del metodo update che prende come parametro un oggetto di tipo Fattura) che mi da problemi:
int id=rs.getInt(1);
if (id==(fattura.getOldId()) &&
id!=(fattura.getId()))
updateId(fattura.getId(), fattura.getId());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(id!=(fattura.getOldId()))
// lancio eccezione dati modificati
}
Date dataEmis=rs.getDate(2);
if (dataEmis.equals(fattura.getOldDataEmis()) &&
!dataEmis.equals(fattura.getDataEmis()))
updateDataEmis(fattura.getId(), fattura.getDataEmis());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(!dataEmis.equals(fattura.getOldDataEmis()))
// lancio eccezione dati modificati
}
String desc=rs.getString(3);
if (desc.equals(fattura.getOldDesc()) &&
!desc.equals(fattura.getDesc()))
updateDesc(fattura.getId(), fattura.getDesc());
// metodo privato per l'aggiornamento id (UPDATE SQL)
else{
if(!desc.equals(fattura.getOldDesc()))
// lancio eccezione dati modificati
}
Il problema è nell'equals fra date e fra String.
Infatti, se come parametro viene passato un NULL (preso dal database), l'equals s'incavola (giustamente).
Il problema è che io voglio che quei campi siano di default a NULL, e quindi ogni volta che aggiorno quei campi per la prima volta, ho questo problema mentre per aggiornamenti successivi (o comunque se quei campi sono diversi da NULL) non ci sono problemi, il meccanismo funziona perfettamente.
Per quanto riguarda le stringhe basta impostare che il valore di default sia "", ma per il campo data? Come risolvere?
Qualcuno mi sa aiutare per favore?