Please see the case 1 and 2 below.
In case 2 : reader.GetString(reader.GetOrdinal("dmic_only")) line return "1" successfully
In case 1 : same code part in string.IsNullOrEmpty(reader.GetString(reader.GetOrdinal("dmic_only"))) == false throws exception.
Exception : Unable to cast object of type 'System.Byte' to type 'System.String'.
dmic_only is a tinyint in database, not byte. It is really interesting. What is difference in cases?
Case 1:
if ((!reader.IsDBNull(reader.GetOrdinal("dmic_disallowed"))
&& string.IsNullOrEmpty(reader.GetString(reader.GetOrdinal("dmic_disallowed"))) == false)
&& (!reader.IsDBNull(reader.GetOrdinal("dmic_only"))
&& string.IsNullOrEmpty(reader.GetString(reader.GetOrdinal("dmic_only"))) == false))
{
retVal.Add("dmic_disallowed", reader.GetString(reader.GetOrdinal("dmic_disallowed")));
retVal.Add("dmic_only", reader.GetString(reader.GetOrdinal("dmic_only")));
}
Case 2 :
//if ((!reader.IsDBNull(reader.GetOrdinal("dmic_disallowed"))
//&& string.IsNullOrEmpty(reader.GetString(reader.GetOrdinal("dmic_disallowed"))) == false)
//&& (!reader.IsDBNull(reader.GetOrdinal("dmic_only"))
//&& string.IsNullOrEmpty(reader.GetString(reader.GetOrdinal("dmic_only"))) == false))
//{
retVal.Add("dmic_disallowed", reader.GetString(reader.GetOrdinal("dmic_disallowed")));
retVal.Add("dmic_only", reader.GetString(reader.GetOrdinal("dmic_only")));
//}