casting DBNULL a otros types

18/10/2006 - 17:28 por Jose Fernandez | Informe spam
Tengo el problema siguiente.

Tengo un datareader que voy leyendo y pasando los valores a las propiedades
de un objeto.

Objeto MyObj=new Objeto()

myObj.Nombre=dr["Nombre"].toString();

OK?

el problema es que cuando el objeto dr me devuelve un valor de tipo
System.DBNULL se jode la cosa.

yo podria crear un metodo para cada tipo pero me pregunto... supuestamente
no es eso lo que tiene que hacer Convert.ToDateTime, ToInt32, etc etc???? me
parece una falacia estar creando un metodo para manejar estos valores a
partr de un DBNULL.

alguien tiene una idea de lo que puedo hacer?

saludos

Preguntas similare

Leer las respuestas

#1 Bela Istok
18/10/2006 - 19:43 | Informe spam
Porque no validas si es dbnull (esta es una propiedad del datareader, y
simplemente lo pones en un string vacio?

Saludos,

Bela Istok

"Jose Fernandez" wrote in message
news:
Tengo el problema siguiente.

Tengo un datareader que voy leyendo y pasando los valores a las
propiedades de un objeto.

Objeto MyObj=new Objeto()

myObj.Nombre=dr["Nombre"].toString();

OK?

el problema es que cuando el objeto dr me devuelve un valor de tipo
System.DBNULL se jode la cosa.

yo podria crear un metodo para cada tipo pero me pregunto... supuestamente
no es eso lo que tiene que hacer Convert.ToDateTime, ToInt32, etc etc????
me parece una falacia estar creando un metodo para manejar estos valores a
partr de un DBNULL.

alguien tiene una idea de lo que puedo hacer?

saludos

Respuesta Responder a este mensaje
#2 Misael Monterroca
19/10/2006 - 03:32 | Informe spam
El convert solo hace eso, convertir pero no hace la comprobación de un valor
nulo, para eso entonces podrias utilizar el operador AS, el hace primero una
comprobación y si no puede realizarla entonces regresa un valor NULL

myObj.Nombre=dr["Nombre"] AS string;

sin embargo, los valores como string, al ser valores por referencia no
pueden asignarle valores nulos :S so, tienes que asignarle un valor por
defecto, como String.Empty, asi que la función tendras que realizarla.

Ahora bien, si usas .net 2.0 puedes usar tipos anulables, es una muy buena
opción y precisamente solucionan tu problematica.



{
this.Saludo = Saludos!
this.Nombre = Misael Monterroca | Microsoft MVP C#;
this.Blog = http://www.neo-mx.com/blogs/neo-mx
}


"Jose Fernandez" wrote in message
news:
Tengo el problema siguiente.

Tengo un datareader que voy leyendo y pasando los valores a las
propiedades de un objeto.

Objeto MyObj=new Objeto()

myObj.Nombre=dr["Nombre"].toString();

OK?

el problema es que cuando el objeto dr me devuelve un valor de tipo
System.DBNULL se jode la cosa.

yo podria crear un metodo para cada tipo pero me pregunto... supuestamente
no es eso lo que tiene que hacer Convert.ToDateTime, ToInt32, etc etc????
me parece una falacia estar creando un metodo para manejar estos valores a
partr de un DBNULL.

alguien tiene una idea de lo que puedo hacer?

saludos

Respuesta Responder a este mensaje
#3 Alberto Poblacion [MVP]
19/10/2006 - 08:10 | Informe spam
"Misael Monterroca" wrote in message
news:
[...]
sin embargo, los valores como string, al ser valores por referencia no
pueden asignarle valores nulos



Discrepo de lo anterior. Son las variables de tipo Valor las que no
admiten un null, mientras que las de tipo Referencia sí que lo admiten. El
String es un tipo referencia y SÍ que le puedes asignar null.

String s;
s = null;
...
if (s==null) ...
if (s==String.Empty) ...
if (s.IsNullOrEmprty()) ...
Respuesta Responder a este mensaje
#4 Misael Monterroca
19/10/2006 - 16:56 | Informe spam
Tienes razon, fue un pequeño lapsus :D


{
this.Saludo = Saludos!
this.Nombre = Misael Monterroca | Microsoft MVP C#;
this.Blog = http://www.neo-mx.com/blogs/neo-mx
}


"Alberto Poblacion [MVP]"
wrote in message news:
"Misael Monterroca" wrote in message
news:
[...]
sin embargo, los valores como string, al ser valores por referencia no
pueden asignarle valores nulos



Discrepo de lo anterior. Son las variables de tipo Valor las que no
admiten un null, mientras que las de tipo Referencia sí que lo admiten. El
String es un tipo referencia y SÍ que le puedes asignar null.

String s;
s = null;
...
if (s==null) ...
if (s==String.Empty) ...
if (s.IsNullOrEmprty()) ...


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida