Consiglio sul campo null del datareader in sql server

mercoledì 02 maggio 2007 - 08.51

trinity Profilo | Guru

Datemi un consiglio,

io mi trovo nella situazione di gestire un campo null proveniente da un db sql server a questo punto ho utilizzato due metodi secondo voi in vb net 2005 quale è quello + corretto?

1 metodo:

Dim oC59 As New PropertyC59 While SqlDr.Read If SqlDr.GetSqlInt32(0).IsNull = False Then oC59.NumeroComponenti = SqlDr.GetSqlInt32(0).Value Else oC59.NumeroComponenti = 0 End If End While

2 metodo:

If IsNothing( oC59.NumeroComponenti ) = False Then oC59.NumeroComponenti = SqlDr.GetSqlInt32(0).Value End If

seconda cosa io ho un campo datetime in sql server che non sempre viene valoriozzato.

mi succede questo che se non viene valorizzato appena faccio una select per riprendere i dati e appena il codice passa sul questo campo data si genera l'errore dicendo che il campo è null. Allora lo provo a gestire il null ma non ci riesco perchè essendo un campo tipo smalldatetime anche se la data non vi è stata inserita di default vi è l'orario quindi non mi gestisce il null o almeno io non ci riesco.

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

erongis Profilo | Junior Member

per gestire i campi null io uso un metodo un po' bovino.
Esempio:
Dim Pippo as string

pippo = "" & sn("nomecampo").value

il segno "&" trasforma il null automaticamente.

ora se pippo non è una stringa ma qualcos'altro, esempio una data sarà sufficiente scrivere:
Dim Pippo as datetime

if isdate("" & sn("nomecampo").value) then
pippo = ctype("" & sn("nomecampo").value,datetime)
else
pippo = nothing
end if

Il tuo metodo è più pulito senz'altro, il mio meno dispendioso in termini di codice.
Quale sia migliore dipende da cosa intendi per migliore.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5