在C#中,如何将SQL Server Management Studio显示的文本输出作为varbinary列的内容,并将该文本转换为存储在列中的byte []?
答案 0 :(得分:33)
好的,所以你想要复制并粘贴SSMS中显示的varbinary列的值(例如“0x6100730064006600”),并从C#中获取它的字节[]?
这很简单 - 0x之后的部分只是十六进制值(每个2个字符)。所以,你取每一对,将它转换为一个指定基数为16(十六进制)的数字,并将其添加到一个列表中,如下所示:
string stringFromSQL = "0x6100730064006600";
List<byte> byteList = new List<byte>();
string hexPart = stringFromSQL.Substring(2);
for (int i = 0; i < hexPart.Length / 2; i++)
{
string hexNumber = hexPart.Substring(i * 2, 2);
byteList.Add((byte)Convert.ToInt32(hexNumber, 16));
}
byte [] original = byteList.ToArray();
免责声明 - 相当狡猾且不是最优的代码,我只是为了演示而将它们一起入侵(它应该可以工作)。
答案 1 :(得分:4)
SqlConnection conn = new SqlConnection(yourConnectionString);
SqlCommand cmd = new SqlCommand("select col from yourtable", conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
byte[] bytes = (byte[])reader[0];
}
reader.Close();
conn.Close();