Conversion from type 'DBNull' to type 'String' is not valid
Hope This Help....
dt.Rows(0)("SupEmail")
returns null
To avoid this chcek before assigning
If Not IsDBNull(dt.Rows(0)("SupEmail")) Then
hfSupEmail.Value = dt.Rows(0)("SupEmail")
End If
You should handle it at DB query level itself.
instead of "select name from student", use "select IsNull(name,'') as name from student"
In this way, DB will handle your NULL value.
The quick and dirty fix:
hfSupEmail.Value = dt.Rows(0)("SupEmail").ToString()
or for C#:
hfsupEmail.Value = dt.Rows[0]["SupEmail"].ToString();
This works very well when your eventual target and the source data are already strings, because any extra .ToString()
call for something that's already a string is likely to be optimized into a no-op by the jitter, and if it's NULL the resulting DBNull.Value.ToString()
expression produces the empty string you want.
However, if you're working with non-string types, you may end up doing significant extra work, especially with something like a DateTime
or numeric value where you want specific formatting. Remember, internationalization concerns mean parsing and composing date and number values are actually surprisingly expensive operations; doing "extra" work to avoid those operations is often more than worth it.