Вниз
Скачать: CL | DM;

dbExpress не открывает личико...   Найти похожие ветки 

← →
pushkin42 ©   (2009-08-20 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

Помогите пожалуйста :-)


← →
Сергей М. ©   (2009-08-20 11:40) [1]

Вместо

SQLQuery1.ParamByName("BLB_VAR").SetBlobData(ms.Memory, ms.Size);

попробуй

S.Position := 0;
SQLQuery1.ParamByName("BLB_VAR").LoadFromStream(S);


← →
Яцхен   (2010-07-06 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-файлы больших размеров?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.052 c
6-1263679694
zSvetik
2010-01-17 01:08
2013.03.22
Открыл, нарезал, передал, склеил, показал видео


15-1353607600
ЕщеОдинКакжеНадоели
2012-11-22 22:06
2013.03.22
Трабла с TrackBar.


2-1347440975
toropoff
2012-09-12 13:09
2013.03.22
неверная установка позиции окна


11-1245728951
Dy1
2009-06-23 07:49
2013.03.22
ComboBox в ListView


2-1333709191
Jimmy
2012-04-06 14:46
2013.03.22
Как избавится от мерцания?




   Наверх