![](/img/trans.png)
[英]Unable to cast object of type 'System.String' to type 'System.Byte[]'. Error after publish
[英]Reading data from database gives Unable to cast object of type 'System.Byte' to type 'System.String' error
請參閱下面的情況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,而不是字節。 真的很有趣。 大小寫有什么區別?
情況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")));
//}
您得到的例外是告訴您您需要知道的確切信息...
reader.GetString(reader.GetOrdinal("dmic_only")) // will throw an error
正如您所說的dmic_only
是tinyint
如果您確實希望將其作為字符串,則必須先將其拆開為字節,然后再解壓縮為字符串
string strValue = Convert.ToString((byte)reader["dmic_only"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.