Foros del Web » Programación para mayores de 30 ;) » .NET »

Error al convertir objeto System.DBnull a System.String

Estas en el tema de Error al convertir objeto System.DBnull a System.String en el foro de .NET en Foros del Web. Hola amigos, tengo este problema en mi aplicacion de C#, tengo un formulario que inserta, actualiza, lee y elimina datos de una tabla en postgres, ...
  #1 (permalink)  
Antiguo 04/06/2014, 07:33
 
Fecha de Ingreso: noviembre-2013
Mensajes: 83
Antigüedad: 10 años, 5 meses
Puntos: 0
Error al convertir objeto System.DBnull a System.String

Hola amigos, tengo este problema en mi aplicacion de C#, tengo un formulario que inserta, actualiza, lee y elimina datos de una tabla en postgres, por requerimientos se le agrego una columna a la tabla ya con datos que puede quedar nula, al agregar ese campo en mi aplicacion me lanza el error de
Error: al covertir el objeto system.dbnull a system.string

mi codigo es el siguiente en a capa DAL
Código:
List<Componente> lista = new List<Componente>();
            using (NpgsqlConnection _conn = Conexion.obtenerConexion())
            {
                try
                {
                    _conn.Open();
                    NpgsqlCommand comando = new NpgsqlCommand("select \"Id\",\"Denominacion\", coalesce(\"UnidadMedida\", ''), coalesce(\"ValorDefault\", '')  from \"Componente\"", _conn);
                    NpgsqlDataReader _reader = comando.ExecuteReader();

                    while (_reader.Read())
                    {
                        Componente compo = new Componente
                        {
                            Id = _reader.GetInt32(0),
                            Denominacion = _reader.GetString(1),
                            UnidadMedida = _reader.GetString(2),
                            ValorDefault = _reader.GetString(3),
                        };
                        lista.Add(compo);
Ya agregue los set y get en mi capa EL, al invocar este metodo para mostrarlo en la UI en un formulario con un datagrid me da ese error
mi codigo en el form es este
Código:
private void LlenarGrid(List<Componente> lista)
        {
            dgvComponente.Rows.Clear();
            int i = 0;
            foreach (Componente item in lista)
            {
                dgvComponente.Rows.Add();
                dgvComponente.Rows[i].Cells[0].Value = item.Id;
                dgvComponente.Rows[i].Cells[1].Value = item.Denominacion;
                dgvComponente.Rows[i].Cells[2].Value = item.UnidadMedida;
               dgvComponente.Rows[i].Cells[3].Value = item.ValorDefault;
                i++;
            }
        }
ayuda por favor!!!
  #2 (permalink)  
Antiguo 04/06/2014, 07:40
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Error al convertir objeto System.DBnull a System.String

Si una columna puede ser NULL lo has de controlar, porque aunque ahora mismo todas las filas tengan el valor, la posibilidad está ahí y más vale programar a la defensiva.

No has dicho que campo es, así que te pongo el código con uno de ellos y tu aplicalo al que le toque:

Código C#:
Ver original
  1. ValorDefault = _reader.IsDBNull(3) ? String.Empty : _reader.GetString(3);
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 04/06/2014, 07:59
 
Fecha de Ingreso: noviembre-2013
Mensajes: 83
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Error al convertir objeto System.DBnull a System.String

La verdad intente controlarlo con la función coalesce de postgres para verificar si es null que lo reemplace con '' pero no funcionó, el campo es de tipo varchar 50, pero empleare tu codigo para resolverlo, muchas gracias.

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.