请参阅下面的案例1和2。
案例2: reader.GetString(reader.GetOrdinal(“dmic_only”))行成功返回“1”
在案例1中:string.IsNullOrEmpty( reader.GetString(reader.GetOrdinal(“dmic_only”)))== false中的相同代码部分抛出异常。
例外:无法将“System.Byte”类型的对象强制转换为“System.String”。
dmic_only是数据库中的tinyint,而不是byte。这真的很有趣。案件有何不同?
案例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")));
}
案例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")));
//}
答案 0 :(得分:1)
你得到的例外就是告诉你你需要知道什么......
reader.GetString(reader.GetOrdinal("dmic_only")) // will throw an error
正如您所说dmic_only
是tinyint
如果你真的想要它作为一个字符串,你必须首先将它作为一个字节然后转换为一个字符串
string strValue = Convert.ToString((byte)reader["dmic_only"))