Newsgroup: it.comp.java
Titolo: Oggetti null

Salve!
Ho un problema con i valori restituiti da una query; il tipo di dato č
intero ma possono capitare dei valori null. Una volta recuperato il valore
lo devo passare ad un costruttore che prende in ingresso un Integer.
Ora se tento di recuperare il valore con qualcosa del tipo
(Integer)mioResultSet.getObject(3) non mi crea un oggetto Integer che ha
valore null. Mi vedo quindi costretto a creare una funzioncina del tipo che
segue dove recupero il valore come se fosse uno String per poi crearne
l'Integer se non č null.
Con una chiamata del tipo intero((String)mioResultSet.getString(3)) risolvo
il tutto.
Qualcuno sa come fare per evitare questa schifezza??
Grazie in anticipo!
Aurelio
    private Integer intero(String valore)
    {
      Integer risultato;
      if (valore == null)
        risultato = null;
      else
        risultato = new Integer(valore);
      return risultato;
    }
  . . . . . .

Questo dovrebbe andare bene:
Resulset rs = null
int val = rs.getInt("numero")
if rs.wasNull()
   val = 0

 poi crearne l'Integer se non č null.
Ma, scusa: se la tua colonna puo' contenere degli SQL NULL, la cosa avra' 
un significato, no? Tipo: hai usato NULL perche' non ha senso che ci sia un 
valore; hai usato NULL per indicare un valore speciale; hai usato NULL per 
indicare che un valore avrebbe senso ma non e' stato ancora calcolato; 
eccetera.
Ora, quel che devi fare e' semplicemente essere coerente con questo 
significato nel tuo codice: 'un oggetto Integer che ha valore null' non ha 
nessun senso. Quel codice - anche se si potrebbe usare un nome migliore per 
la funzione, o semplicemente usare
 Integer risultato = (valore == null) ? null : new Integer(valore);
ti serve per forza, dato che, se nel database hai un caso speciale, devi 
per forza di cose discriminarlo nel codice.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

Grazie per la celeritŕ delle risposte!
Quanto ai null so bene che questi hanno significato se si trovano in una
certa colonna.
Il mio problema era come passare avanti questa informazione usando un
oggetto Integer che come oggetto puň essere null.
Nella documentazione Oracle su JDBC trovo:
Java represents a SQL NULL datum by the Java value null. Java datatypes fall
into two categories: primitive types (such as byte, int, float) and object
types (class instances). The primitive types cannot represent null. Instead,
they store the null as the value zero (as defined by the JDBC
specification). This can lead to ambiguity when you try to interpret your
results.
In contrast, Java object types can represent null. The Java language defines
an object wrapper type corresponding to every primitive type (for example,
Integer for int, Float for float) that can represent null. The object
wrapper types must be used as the targets for SQL data to detect SQL NULL
without ambiguity
Volevo poter fare proprio questo nel modo piů pulito possibile...
AR

 oggetto Integer che come oggetto può essere null.
E' proprio qui il punto - un oggetto Integer non puo' essere null, dato che 
e' il wrapper di un intero, e gli interi hanno valore 1,2, etc, e null non 
e' compreso (al contrario, in SQL, NULL e' un valore valido per il tipo 
INTEGER)
Quello che puoi fare (che gia' fai) e' lasciare a null il _riferimento_ ad 
un integer, nel caso il valore SQL sia NULL. Ma siccome questa e' una 
scelta tua, e se ne potrebbero fare di diverse, non c'e' nulla di 
predefinito nel linguaggio per trattare questa cosa, quindi devi per forza 
di cose scrivere codice che interpreti la situazione 'SQL NULL' e gli 
attribuisca il particolare significato che tu vuoi dargli (riferimento ad 
un oggetto di tipo Integer, lasciato a null).


 wrote in message
news:Xns920F7FE7FB3E8cr...@130.133.1.4...
