Saltar al contenido

La conversión del tipo ‘DBNull’ al tipo ‘String’ no es válida

Alina, parte de nuestro staff, nos ha hecho el favor de crear este post ya que controla muy bien el tema.

Solución:

La solución rápida y sucia:

hfSupEmail.Value = dt.Rows(0)("SupEmail").ToString()

o para C#:

hfsupEmail.Value = dt.Rows[0]["SupEmail"].ToString();

Esto funciona muy bien cuando su destino final y los datos de origen ya son cadenas. Esto se debe a que cualquier extra .ToString() pide algo que ya es un string generalmente será optimizado por el jitter en un no-op, y si es NULL, el resultado DBNull.Value.ToString() expresión produce el vacío string usted quiere.

Sin embargo, si está trabajando con personas que no sonstring tipos, puede terminar haciendo importante trabajo extra, especialmente con algo como un DateTime o valor numérico donde desea un formato específico. Recuerde, las preocupaciones de internacionalización significan que analizar y componer valores de fecha y número son en realidad operaciones sorprendentemente costosas; hacer un trabajo “extra” para evitar esas operaciones a menudo vale más que la pena.

Espero que esto ayude….
dt.Rows(0)("SupEmail") devoluciones null

Para evitar esta comprobación antes de asignar

If Not IsDBNull(dt.Rows(0)("SupEmail")) Then
    hfSupEmail.Value = dt.Rows(0)("SupEmail")
End If

Aparentemente tu dt.Rows(0)("SupEmail") viene como NULL de DB y no puede asignar NULL a string propiedad. Intenta reemplazar esa línea con:

hfSupEmail.Value = If(IsDbNull(dt.Rows(0)("SupEmail")), String.Empty, dt.Rows(0)("SupEmail").ToString)

El código verifica si el valor es NULL y si lo es, lo reemplaza con vacío stringde lo contrario usa el valor original.

Eres capaz de confirmar nuestro quehacer fijando un comentario y puntuándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *