C# 如何显示变量二进制字段数据
我有一个数据类型为varBinary的数据库字段。现在在gridView中,我想显示这些数据。但是我得到了输出:C# 如何显示变量二进制字段数据,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我有一个数据类型为varBinary的数据库字段。现在在gridView中,我想显示这些数据。但是我得到了输出: System.Byte[] 不是价值 0x2C6D1A 在数据库中 请帮助解决此问题。您可以使用该类格式化字节数组以用于显示: string forDisplay = "0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty); 如果您不想直接转换为字符串,则需要将字节数组转换为各种其他类
System.Byte[]
不是价值
0x2C6D1A
在数据库中
请帮助解决此问题。您可以使用该类格式化字节数组以用于显示:
string forDisplay =
"0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty);
如果您不想直接转换为字符串,则需要将字节数组转换为各种其他类型
编辑
如果要将某些查询结果直接绑定到GridView控件,则在查询本身中将VARBINARY列转换为VARCHAR可能会更容易:
SELECT CONVERT(VARCHAR(MAX), your_varbinary_column, 1) AS for_display
FROM your_table
注意:这种类型的转换(从VARBINARY到“0x1234AB”格式的VARCHAR)仅在SQL Server 2008中正确工作。早期版本的SQL Server只将二进制数据直接转换为字符数据。如果没有任何明显的可用信息,可能只需循环:
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();
}
你能再具体一点吗。很抱歉,我无法理解在何处添加这行代码:string forDisplay=0x+BitConverter.ToStringyourByteArray.Replace-,string.Empty;将数据从sql server绑定到datagrid的最佳方法是什么?我需要给用户更新文件的选项用新文件替换现有文件,我需要先从sql server加载现有文件,然后给用户替换文件的选项,还是可以在不将其加载到Web应用程序的情况下进行替换?@RehanMehdi这似乎是一个完全无关的问题;我会把它扔进一个对象模型…谢谢你的回复。你能帮我写一下吗。我不熟悉对象编程。我应该用我的代码开始一个新问题吗?@Rehan这听起来不是一个非常具体的问题。。。你可以尝试一下,但要想获得好评,需要比这更具体一点。
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);
}
}