IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Заполнение Blob поля из Массива (Delphi) (https://www.imho.ws/showthread.php?t=24694)

ReapeR 18.03.2003 15:55

Заполнение Blob поля из Массива (Delphi)
 
Например у меня какой либо динамический массив. Как полностью его загнать в базу данных. Желательно с примером.

Artyom 31.03.2003 13:59

Используй потоки: читай в Delphi help
набери TBLOBField.LoadFromStream

ReapeR 31.03.2003 15:14

Artyom
а примерчика нет? В хелпе я и сам нашел, но почему то он писать не хочет в блоб

OneHero 13.10.2004 21:16

Цитата:

Сообщение от ReapeR
а примерчика нет? В хелпе я и сам нашел, но почему то он писать не хочет в блоб

Ну, да, через потоки не получается. Но ошибки не выдает.
Пытаюсь запостить доковские файлы или pdf - без разницы. Не копирует из потока в поток (TFileStream --> TBLOBSTREAM). Возможно, что-то копирует, т.к. увеличивается размер базы - на несколько байтов для каждой попытки записи.
При попытке выгрузить записанное TBLOBSTREAM --> TFileStream и в файл => создается пустой файл с указанным именем.

Может кто-нибудь что-нибудь дельное подсказать?

/7y3uK 14.10.2004 09:56

OneHero
Напиши процедурку, в которой у тебя баги, давай вместе разбираться... Особенно то место в котором ты КОПИРУЕШЬ из потока в поток

dyr_farot 14.10.2004 11:00

делаю так:
( IB )
Код:

        std::auto_ptr<TIBQuery> sql(new TIBQuery(this));
          sql->Database = dmMain->dbMain;
          sql->SQL->Text = "update SELECTIONS set RESULT = :RESULT where ID = " + IntToStr(FId);
          sql->Transaction = dmMain->trMain;

        std::auto_ptr<TStream> stream(new TMemoryStream());
        stream->Write(&parameters, sizeof(parameters));

        sql->Params->ParamByName("RESULT")->LoadFromStream(stream.get(), ftBlob);

        sql->ExecSQL();

хоть и Builder, но логика, думаю, понятна

parameters -- структура, но с массивом все полностью аналогично

P.S.
код свой, действительно, лучше приведи

/7y3uK 14.10.2004 12:39

Хе, после поиска в инете нашел таки :) Кажись вся фенька в том, что ты поток обычный создаешь, а надо БЛОБ, т.к. по определнию BLOB:большой двоичный объект (данных), "блоб". Соответственно в дельфе нужно открывать поток типа TBlobStream. Вот ссылка на пример:
_http://www.codenet.ru/progr/delphi/db_028.php


Часовой пояс GMT +4, время: 13:28.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.