View Full Version : [VB.NET] Datareader e valori NULL
nel mio programma estraggo da un database un recordo con un datareader e creo un oggetto di una classe da me definita con questo codice:
drSess = comElencoOperazioni.ExecuteReader()
drSess.Read()
Sessione = New Sessione(drSess("Chiave"), drSess("Farmacia"), drSess("Centro"), drSess("Data_creazione"), drSess("Data_inizio"), drSess("Data_fine"), drSess("Stato"), drSess("Utente"), drSess("Codass"), drSess("Nota"), drSess("Numero_ricette"), drSess("Numero_prenotazioni"), drSess("Telefono"), drSess("Website"))
qual'è il problema, beh che se qualcuno di quei campi è NULL allora mi dice
Cast non valido dal tipo 'DBNull' al tipo 'Date'
Ma può essere anche String etc..
Cosa posso fare?
nel mio programma estraggo da un database un recordo con un datareader e creo un oggetto di una classe da me definita con questo codice:
drSess = comElencoOperazioni.ExecuteReader()
drSess.Read()
Sessione = New Sessione(drSess("Chiave"), drSess("Farmacia"), drSess("Centro"), drSess("Data_creazione"), drSess("Data_inizio"), drSess("Data_fine"), drSess("Stato"), drSess("Utente"), drSess("Codass"), drSess("Nota"), drSess("Numero_ricette"), drSess("Numero_prenotazioni"), drSess("Telefono"), drSess("Website"))
qual'è il problema, beh che se qualcuno di quei campi è NULL allora mi dice
Cast non valido dal tipo 'DBNull' al tipo 'Date'
Ma può essere anche String etc..
Cosa posso fare?
drSess("Chiave").ToString...
beh si però mi costringe ad avere tutti i valori string perchè altrimenti mi dice
Cast non valido dalla stringa "" al tipo 'Date'.
:muro:
Se c'è la possibilità che vengano restituiti valori DBNull, devi condizionare l'inserimento nel costruttore del tuo oggetto, controllando prima i valori restituiti dal Reader, utilizzando variabili o oggetti di appoggio :
Dim S As String = ""
If Not TypeOf Reader("campoStringa") Is DBNull Then S = Reader("campoStringa")
Considera che DBNull è un tipo.
In questo modo, comunque vada, S verrà passata al costruttore nel modo corretto.
Analogamente per le date ecc... ;)
Kralizek
21-11-2009, 00:44
Se c'è la possibilità che vengano restituiti valori DBNull, devi condizionare l'inserimento nel costruttore del tuo oggetto, controllando prima i valori restituiti dal Reader, utilizzando variabili o oggetti di appoggio :
Dim S As String = ""
If Not TypeOf Reader("campoStringa") Is DBNull Then S = Reader("campoStringa")
Considera che DBNull è un tipo.
In questo modo, comunque vada, S verrà passata al costruttore nel modo corretto.
Analogamente per le date ecc... ;)
anche
Dim S As String = ""
If Not Reader.IsDbNull(0) Then S = Reader.GetString(0)
cmq preferisco usare la modalitá disconnessa e poi usare le LinqDataSetExtensions :)
cmq preferisco usare la modalitá disconnessa e poi usare le LinqDataSetExtensions :)
Mmm, modalità disconnessa per estrarre un solo record ? Non vedo questa gran necessità...
Kralizek
21-11-2009, 09:09
Mmm, modalità disconnessa per estrarre un solo record ? Non vedo questa gran necessità...
ops scusa, era tardi e non ho letto tutto...
ps: Frykky suka! :Prrr:
(sperando che sia il Frykky di TGM, sennò mi acchiappo un ban per direttissima :P)
krallo culo :Prrr:
Altra domandina se io ho una datagridview e inserisco una nuova riga qual'è l'evento da intercettare per chiamare il metodo Update?
Ho provato
validating
validated
rowvalidating
rowchange
nulla...
per ora salvo le modifiche solo facendo closing del form (non ho bottoni nè nulla) ma non è molto corretto perchè se c'è un errore l'utente è costretto a uscire e rientrare
Kralizek
22-11-2009, 16:58
sei pessimo, hai fatto copia e incolla da msn! :mc:
sei pessimo, hai fatto copia e incolla da msn! :mc:
:ciapet:
RowValidated oppure RowsAdded, a seconda della necessità... ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.