если возникли трудности с TBlobField, то вот вариант корявый прямо через строку, медленный, но работает, данные могут сохранится не в том виде как хотелось, но если цель - только сохранить их , то вот
Код:
StringBuilder: TStringBuilder;
I : LongInt;
arr : array of Byte;
sqlstring: string;
StringBuilder.Append('DECLARE @Data varbinary(8000)').AppendLine;
StringBuilder.Append('SET @Data = 0x');
for I := 0 to Length(arr)-1 do
StringBuilder.AppendFormat('%d',[arr[i]]);
StringBuilder.AppendLine;
sqlstring := StringBuilder.ToString;
теперь с @Data можно работать и передавать куда угодно, можно и без @Data
у меня другая проблема, мне нужно не записать, а прочитать данные
запрос у меня возвращает TRecordset, в котором есть поле Res Varbinary(8000), подскажите, как получить блоб и загрузить его в MemoryStream. Нашел один кусочек примера,
Код:
BLOB:=TBlobStream.Create((query1.FieldByName('COLUMN1')) as TBlobField,bmRead);
изменил под себя, но на эту строку ругается
Код:
Blob := TBlobStream.Create(( R.FieldByName('Res')) as TBlobField,bmRead);
E2015 Operator not applicable to this operand type
( R : TRecordset; Blob : TBlobStream
Видимо с TRecordset такое не работает, а только с TAdoQuery, но я не могу получить никакие объекты ADO , кроме TRecordset, из-за специфики библиотеки, которой пользуюсь, есть варианты как это обойти?