septiembre 27, 2007

Tipos Nulables para valores NULL en Bases de Datos

Hace unos días hice una clase de tipo Entity que la poblabla con registros de una tabla de una Base de Datos y la mayoría de sus valores eran opcionales, es decir nulos así que utilice el concepto de tipos nulables del framework 2.0. Con esta clasecilla insertaba regsitros con valores nulos.

Public Class Cuestionario
'Los miembros privados nulables
Private _otroIdiomaHabla As Nullable(Of Byte)
Private bolv1 As Nullable(Of Boolean)


--los métodos públicos de acceso a los miembros privados.
Public Property OtroIdiomaHabla() As Nullable(Of Byte)
Get
Return Me._otroIdiomaHabla
End Get

Set(ByVal value As Nullable(Of Byte))
Me._otroIdiomaHabla = value
End Set

End Property
End Class


'El uso de la clase
Dim objCuestionario as new Cuestionario
'Asigno nada a su miembro
objCuestionario.OtroIdiomaHabla = Nothing
'Verifico el valor
If objCuestionario.OtroIdiomaHabla.HasValue then
'Existe valor
Else
'Sin valor
End if

'Cuando asigno valor a un comando como parametro a la ejecución de un store procedure 'pasamos el valor o un nothing implicito por el tipo nulable y que equivale a un null en la columna de la tabla de la BD.
cmd.Parameters.Add("@OtroIdiomaHabla", Data.SqlDbType.Bit, 1).Value = objCuestionario.OtroIdiomaHabla

'En el store procedure asignamos un default al parametro y cuando pasamos el valor a través del parametro a nuestro objeto esteremos pasando un nothing que va equivaler al Null.
CREATE PROCEDURE spuInserta
@OtroIdiomaHabla tinyint=NULL
As
Insert Into Tabla (OtroIdiomaHabla, ValorX)
Values(@OtroIdiomaHabla, Default)
Go

No hay comentarios.: