我有一個數據庫字段的dataType是varBinary。現在在一個gridView中我想顯示這些數據。但我得到的輸出:如何顯示varBinary字段數據
System.Byte[]
不是值
0x2C6D1A
這是在數據庫中。
請幫助如何解決這個問題。
我有一個數據庫字段的dataType是varBinary。現在在一個gridView中我想顯示這些數據。但我得到的輸出:如何顯示varBinary字段數據
System.Byte[]
不是值
0x2C6D1A
這是在數據庫中。
請幫助如何解決這個問題。
可以使用BitConverter
類格式化你的字節數組用於顯示目的:
string forDisplay =
"0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty);
如果你不想直接轉換爲string
,然後BitConverter
has a load of methods從字節數組轉換成各種其他類型。
編輯...
如果你直接結合一些查詢結果的GridView
控制那麼它可能是更容易的VARBINARY
列轉換爲VARCHAR
在查詢本身:
SELECT CONVERT(VARCHAR(MAX), your_varbinary_column, 1) AS for_display
FROM your_table
(注意:這種類型的轉換 - 從VARBINARY
到VARCHAR
的'0x1234AB'
格式 - 只能在SQL Server 2008中正常工作。早期版本的SQL Server只是將bin直接進制數據字符數據)
如果沒有任何明顯可用,或許只是循環:
public static string ToHexString(byte[] raw)
{ // could also be an extension method
StringBuilder sb = new StringBuilder("0x", 2 + (raw.Length * 2));
for (int i = 0; i < raw.Length; i++)
{
sb.Append(raw[i].ToString("X2"));
}
return sb.ToString();
}
如果這是一個類屬性,這將是微不足道的創建TypeConverter
,做這個(用於顯示目的),並用[TypeConverter(typeof(HexConverter))]
來標記屬性:
class HexConverter : TypeConverter // untested
{
public override object ConvertTo(ITypeDescriptorContext context,
System.Globalization.CultureInfo culture,
object value, Type destinationType)
{
if (destinationType == typeof(string))
{
return ToHexString((byte[])value);
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
什麼是最好的方法將數據從sql server綁定到datagrid?我需要給用戶選項來更新文件(用新文件替換現有文件),我是否需要先從sql服務器加載現有文件,然後給用戶選項以替換它,或者可以在不加載的情況下替換它進入網絡應用程序? – 2013-09-16 06:02:00
@RehanMehdi這似乎是一個完全無關的問題;我只是把它扔進一個對象模型... – 2013-09-16 07:09:24
感謝您的回覆。你能以書面形式幫助我嗎?我是新的對象編程。我應該用我的代碼開始一個新的問題嗎? – 2013-09-16 07:25:54
請問您能否更具體些。我很抱歉,我不明白在哪裏添加這行代碼: 'string forDisplay = 「0x」+ BitConverter.ToString(yourByteArray).Replace(「 - 」,string.Empty);' – 2013-09-16 05:57:31