我一直在寻找如何从数据库中检索二进制数据。我的查询工作正常,因为它在SQL管理器中显示二进制数据。
但是在Visual Studio 2010中,它只显示<Binary Data>
,我个人认为这不是问题,但如果我尝试检索它并将其存储在变量中它只是空的。任何其他查询都可以工作,只要它与二进制数据无关......
我不想使用数据网格或任何东西,因为我只需要它作为变量。
SqlCommand CMDbinary = new SqlCommand("SELECT Binary_field AS binary "
+ "FROM BIN_table", abc_conn);
SqlDataReader Bin_retriever = CMDbinary.ExecuteReader();
while (Bin_retriever.Read())
{
BIN.Add(Bin_retriever["binary"].ToString());
}
abc_conn.Close();
我知道这不是完整的代码,但这是出错的地方,我想我必须做一些特别的事情才能显示二进制信息,因为(我再说一遍)如果我改变{ {1}}到Binary_field
(数据库中为UID
)。
对此的任何帮助都非常受欢迎,提前致谢!
答案 0 :(得分:3)
Bin_retriever["binary"].ToString()
看起来很致命。对于二进制数据,您可以在此处获得byte[]
。你不能只调用ToString()
- 你可能会得到类型名称。那么,你想怎么展示它呢?十六进制?
byte[] raw = (byte[]) Bin_retriever["binary"];
现在按您的选择格式化。例如:
var builder = new StringBuilder(raw.Length * 2);
for(int i = 0 ; i < raw.Length ; i++)
builder.Append(raw[i].ToString("x2"));
string hex = builder.ToString();