有谁知道如何使用 SQL 将几个字节传递给二进制(或 varbinary)字段,最好是在 ADO(经典)和 VBScript(或 Visual Basic 6)中?
我希望编码 10-20(也许更多)字节的数据并将这些数据存储在 SQL db 字段中。(它不是 MS-SQLSVR,但我希望标准 SQL 支持的格式可以工作!)
这些字节可以作为通过 AscB/ChrB 获得的字节字符串,或者是“字节”数组(实际上是通过“cbyte”获得的字节类型的变体)并存储在数组中。
第一个选项:使用字符串格式 ,我在创建 SQL 插入时取得了一些(有限)成功:
x = ".>?hD-&91k[=" '<psuedo string of chars, some unprintable
Insert Into rawtest (byt) Values (CAST('" & x & "' as SQL_BINARY(12)))
但我担心字符串空值会截断字段中的数据,并且其他非打印控制字符会妨碍处理数据。有没有办法避免这种情况?
第二个选项:字节数组 我可以很容易地将数据放入数组中,但看不到如何传递给 SQL 插入语句。如果我尝试传入 12 个字节,则由于 CAST 尝试将数据存储到整数(4 字节)中,因此插入失败。如果我传入一个字节,它就可以工作,例如:
x = a(0)
并继续工作 4 个字节,但在 Integer 溢出时失败。此外,它对数据进行重新排序
我尝试使用各种解决方法:
Insert Into rawtest (byt) Values (CAST('12,34,45' as SQL_BINARY(12)))
Insert Into rawtest (byt) Values (CAST(&h12&h34 as SQL_BINARY(12)))
Insert Into rawtest (byt) Values (CAST(0x123456789012 as SQL_BINARY(12)))
我也尝试过类似的组合:
Insert Into rawtest (byt) Values (CONVERT('" & x & "', SQL_BINARY)
但这些都失败了!
理想情况下,我想要一个方法,任何方法,它需要一个最多 20 个字节的小型二进制数组(理想情况下是完整的字节范围 0-255,但可能需要更少)并将它们传递给一个普通的、原始的、二进制 SQL 字段。
理想情况下,我需要在 VBScript/ADO 中执行此操作,但如果可用,可以采用基于 VB6 的解决方案。我希望这是“原始”二进制文件,我不想使用 ascii 编码,比如 Base64。
我已经用谷歌搜索了,直到我麻木了,并且没有发现太多与 SQL 中的二进制字段相关的东西。
你能帮我吗?任何答案表示赞赏。很多谢谢。