![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dbExpress не открывает личико... [FB2.1]
pushkin42 © (2009-08-20 08:27:00)Поначитавшись "правильных" статей по поводу 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
Помогите пожалуйста :-)
Яцхен (2010-07-06 14:55:00) [1]подскажите как быть с блобами которые больше 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-файлы больших размеров?
Сергей М. (2009-08-20 11:40:00) [2]Вместо
SQLQuery1.ParamByName('BLB_VAR').SetBlobData(ms.Memory, ms.Size);
попробуй
S.Position := 0;
SQLQuery1.ParamByName('BLB_VAR').LoadFromStream(S);