none
Duda sobre campos NULL en base de datos y tratamiento en webmethods RRS feed

  • Pregunta

  • Buenos dias,

    Os comento. Resulta que yo tengo mis tablas en sql server y, obviamente, hay campos vacios que se quedan como NULL y cuándo los cargo con mi WebMethod otorgando sus valores a objetos de clase me dan error porque dicen que son campos null y que no se pueden convertir, es mas, me sale este error "System.InvalidCastException: 'La conversión del tipo 'DBNull' en el tipo 'String' no es válida.'"

    ¿Cómo lo arreglo? pues en el procedimiento almacenado en sql server hago un "ISNULL(campo, ' ')" y así no me produce el error porque me devuelve un campo en blanco en vez de NULL.

    Mi pregunta

    Es muy pesado ir consulta por consulta en sql server teniendo que matizar todos los campos y, es mas, hay que revisar las tablas para ver que campos aceptan campos en blanco porque si hay alguno que no hallas tratado, en el futuro, producirá error y tu ni te enteraras, por tanto ¿Como puedo evitar esto? No se, que los campos en las tablas no se quedaran en NULL sino en " " o, no se, alguna idea que me propongáis.

    Gracias

    viernes, 5 de julio de 2019 6:55

Respuestas

  • hola

    >>me sale este error "System.InvalidCastException: 'La conversión del tipo 'DBNull' en el tipo 'String' no es válida.'"

    tienes que validarlo, puedes usar desde codigo

    if(reader["NombreCampo"] == DBNull.Value){
       //haces algo si es null
    } else{
        variable = reader["NombreCampo"].ToString();
    }


    pero vas a tener que definir un valor por defecto para el campo si es null y quieres retonar un valor

    No puede convertirse a tu tipo de dato dbnull, hay que controlarlo mediente validacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta eRiver1 viernes, 5 de julio de 2019 20:02
    • Marcado como respuesta Jesús Prieto lunes, 22 de julio de 2019 18:13
    viernes, 5 de julio de 2019 13:57

Todas las respuestas

  • Hola, puedes mostrar el codigo de cómo llamas a tu SQL Server y como mapeas la respuesta? No hace falta modifiar tu procedimiento para poner ISNULL() en todos los campos. Gracias

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 5 de julio de 2019 9:40
    Moderador
  • "System.InvalidCastException: 'La conversión del tipo 'DBNull' en el tipo 'String' no es válida.'"

    Una forma relativamente sencilla de arreglar esto es usar el operador "as" en lugar del cast. Por ejemplo, si estas casteando un dato asi:

    string dato = (string)dataReader["campo"];

    entonces cambialo asi:

    string dato = dataReader["campo"] as string;

    Esto hace que el DBNull se convierta en null sin producir el InvalidCastException.


    viernes, 5 de julio de 2019 10:40
  • hola

    >>me sale este error "System.InvalidCastException: 'La conversión del tipo 'DBNull' en el tipo 'String' no es válida.'"

    tienes que validarlo, puedes usar desde codigo

    if(reader["NombreCampo"] == DBNull.Value){
       //haces algo si es null
    } else{
        variable = reader["NombreCampo"].ToString();
    }


    pero vas a tener que definir un valor por defecto para el campo si es null y quieres retonar un valor

    No puede convertirse a tu tipo de dato dbnull, hay que controlarlo mediente validacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta eRiver1 viernes, 5 de julio de 2019 20:02
    • Marcado como respuesta Jesús Prieto lunes, 22 de julio de 2019 18:13
    viernes, 5 de julio de 2019 13:57