Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字节数组如何存储在Varbinary类型的sql server表列中?_C#_Sql Server - Fatal编程技术网

C# 字节数组如何存储在Varbinary类型的sql server表列中?

C# 字节数组如何存储在Varbinary类型的sql server表列中?,c#,sql-server,C#,Sql Server,我有一个要求,我想使用C代码在类型为Varbinary的sql server表列中存储一个字节数组。现在当我尝试这样做时,我在sql server表中得到一个值0x4A6974656E647212053616E6B686C61,用于字节数组a[]={74,105,116,101,110,100,114,97,32,83,97,110,107,104,108,97}。我不知道这是怎么做到的。我得到的值实际上是每个十进制数的十六进制表示 sql server在将字节数组存储到varbinary sq

我有一个要求,我想使用C代码在类型为Varbinary的sql server表列中存储一个字节数组。现在当我尝试这样做时,我在sql server表中得到一个值0x4A6974656E647212053616E6B686C61,用于字节数组a[]={74,105,116,101,110,100,114,97,32,83,97,110,107,104,108,97}。我不知道这是怎么做到的。我得到的值实际上是每个十进制数的十六进制表示


sql server在将字节数组存储到varbinary sql表列时是否执行一些内部转换

您会看到存储在字段中的实际二进制值的十六进制字符串表示,因为这是一个表示字节的半可读版本。还应该如何显示

字符串表示形式和实际字节不相同。大多数类型都是这样。如果您存储一个整数,比如7622389,它实际上也会根据字段的大小存储为一定数量的字节。但是,显示实际字节而不是值的字符串表示形式会令人困惑

对于通用二进制数据,十六进制字符串格式是逻辑字符串表示形式。SQLServerManagementStudio理论上可以显示图片的缩略图,如果字节恰好构成图像文件或其他一些已知的文件格式。但由于该字段只包含通用二进制数据,它无法真正知道最佳显示格式是什么,因此它使用十六进制字符串

当您实际从数据库选择字段到C程序时,返回的通常是一个字节[],有时封装在某种容器类型中。

尝试以下方法:

DECLARE @bin VARBINARY(MAX)=0x4A6974656E6472612053616E6B686C61;
SELECT CAST(@bin AS VARCHAR(MAX))
结果吉坦德拉·桑赫拉看起来非常-嗯-合身…:-

一些背景:

VARBINARY只不过是一个BLOB。在SELECT中,它显示为十六进制字符串,但实际存储方式并非如此

您可以将所有内容存储在VARBINARYcolumn中:图片、字符串、数字、XML、复杂结构。。。唯一但非常重要的重点是,你们必须知道,如何阅读和解释这个

我为什么要把这个投给瓦查尔?您的数字看起来像普通字母的ASCII码。VARCHAR是一种表示1字节扩展ASCII字符串的数据类型,绑定排序规则定义了非普通字符的解释和排序(如代码页)。 假设一个字节接一个字节地传入,转换为普通字符串将根据字节的值生成字母

很明显,您不会将任何二进制文件转换为字符串。 许多介于0和255之间的值不可打印。其他痛苦来源可能是不同的排序规则/代码页设置。此外,如果您传入一个编码类似utf-8的字符串,您将得到一些错误字符,因为utf-8将对一些字符进行多字节编码


但在您的简单示例中,它是有效的。

您想知道它是如何存储在db中的,还是想返回实际的字节数组?请仔细阅读这个表示VARBINARYMAX数据类型在存储和检索方面的行为。据我所知,值的二进制表示形式可能会随着SQL Server版本的不同而变化。这将帮助您转换二进制和varbinary数据