Кто-нибудь знает, как передать несколько байтов в поле Binary (или varbinary), используя SQL и в идеале в ADO (classic) и VBScript (или Visual Basic 6)?
Я хочу закодировать 10-20 (может быть, больше) байтов данных и сохранить эти данные в поле базы данных SQL. (Это не MS-SQLSVR, но я надеюсь, что стандартный формат, поддерживаемый SQL, будет работать!)
Байты доступны либо в виде строки байтов, полученных с помощью AscB / ChrB, OR, либо в виде массива байтов (на самом деле варианты байтов типа, полученных через 'cbyte') и сохраняемых в массиве.
Первый вариант: использование формата строки
У меня был некоторый (ограниченный) успех при создании вставки SQL как:
x = ".>?hD-&91k[=" '<psuedo string of chars, some unprintable
Insert Into rawtest (byt) Values (CAST('" & x & "' as SQL_BINARY(12)))
Но я обеспокоен тем, что строковые нули будут обрезать данные в поле, а другие непечатные управляющие символы будут мешать обработке данных. Есть ли способ избежать этого?
Второй вариант: массив байтов
Я могу достаточно легко поместить данные в массив, но не вижу, как перейти к оператору SQL Insert. Если я попытаюсь передать 12 байтов, вставка завершится неудачно из-за попытки CAST сохранить данные в целое число (4 байта). Если я передаю один байт, он работает, например:
x = a(0)
И продолжает работать в течение 4 байтов, но завершается ошибкой, когда целое число переполняется. Кроме того, это переупорядочивает данные
Я пытался использовать различные обходные пути:
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.
Вы можете помочь? Любые ответы приветствуются. Многие спасибо.