-
pushkin42 © (20.08.09 08:27) [0]Поначитавшись "правильных" статей по поводу dbExpress и работы с BLOB полями в нём, решил сбацать крутую программку для хранения фотографий в базе.
И вот, я начинаю...var
ms: TMemoryStream;
sqlquery1: Tsqlquery;
begin
ms := TMemoryStream.Create;
sqlquery1 := tsqlquery.Create(nil);
sqlquery1.SQLConnection := DB^;
try
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('INSERT INTO DOCUMENTS(DATA) VALUES(:BLB_VAR)');
SQLQuery1.Params.Clear;
SQLQuery1.Params.CreateParam(ftBlob, 'BLB_VAR', ptInput);
ms.LoadFromStream(S);
ms.Position := 0;
SQLQuery1.ParamByName('BLB_VAR').SetBlobData(ms.Memory, ms.Size);
SQLQuery1.ExecSQL();
finally
ms.Free;
sqlquery1.Close;
sqlquery1.Free;
end;
на строчке SQLQuery1.ExecSQL()
получаем:
incorrect values within sqlda structure
запрос, естественно, не выполняется...
Используются Delphi 2009, dbExpress, Firebird 2.1.2 dialect 3;
IBExpert, через который в ту же базу все картинки прекрасно грузятся.
Размер блоб - 1024, подтип - binary
Помогите пожалуйста :-) -
Сергей М. © (20.08.09 11:40) [1]Вместо
SQLQuery1.ParamByName('BLB_VAR').SetBlobData(ms.Memory, ms.Size);
попробуй
S.Position := 0;
SQLQuery1.ParamByName('BLB_VAR').LoadFromStream(S); -
Яцхен (06.07.10 14:55) [2]подскажите как быть с блобами которые больше 32 Кб ?
есть таблица (Оракл)
CREATE TABLE "RLR_ADMIN"."RLR_LOG"
( "ID" NUMBER(*,0) NOT NULL ENABLE,
"XML_NAME" NVARCHAR2(50),
"XML_DATA" NCLOB,
CONSTRAINT "PK_RLR_LOG_ID" PRIMARY KEY ("ID")
) ;
пока значения XML_DATA меньше 32 к -- все работает нормально,
а когда больше -- получаю ошибку оракла:
ORA-01460: unimplemented or unreasonable conversion requested.
вставку делаю через хранимую процедуру......
Stream := TStringStream.Create(WideString(XmlData));
try
Stream.Position := 0;
Params.ParamByName('P_XML_DATA').LoadFromStream(Stream, ftWideMemo);
finally
Stream.Free;
end;
ExecProc;
......
прообовал и черезParams.ParamByName('P_XML_DATA').SetBlobData(Stream, Stream.Size);
результат тот же - ошибка
каким макаром можно писать в базу xml-файлы больших размеров?