Microsoft SQL Server
Скрипты
Другие

Вставка картинки (файла) в поле таблицы и работа с Blob полями

Опубликовано: 22 сен 04
Рейтинг:

Автор: Lepsik
Прислал: Lepsik

//---------------------------------------------------------------------------
bool save_jpeg( TField *field, TJPEGImage *picture )
{
    assert(field);
    assert(picture);
    TMemoryStream *stream = new TMemoryStream;
    TBlobField *blob = (TBlobField *)field;
     try
     {
        picture->SaveToStream(stream);
        int sz = stream->Size;
        if( sz > NULL )
        {
              stream->Seek(0,0);
              blob->LoadFromStream(stream);
        }
     }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); return false;}
     delete stream;
     return true;
}
//---------------------------------------------------------------------------
bool load_jpeg( TField *field, TJPEGImage *picture )
{
    bool result = true;
    assert(field);
    assert(picture);
    TMemoryStream *stream = new TMemoryStream;
    CHECK_RIGHT<TBlobField *>(stream);
    TBlobField *blob = (TBlobField *)field;
     try
     {
        blob->SaveToStream(stream);
        int sz = stream->Size;
        if( sz > NULL )
        {
              stream->Seek(0,0);
              picture->LoadFromStream(stream);
        }else
            result = false;
     }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); result = false;}
     delete stream;
     return result;
}
//---------------------------------------------------------------------------
bool jpeg2file( TField *field, char *name_file )
{

    bool result = true;
    assert(field);  assert(name_file);
    TMemoryStream *stream = new TMemoryStream;
    TBlobField *blob = (TBlobField *)field;
     try
     {
        blob->SaveToStream(stream);
        int sz = stream->Size;
        if( sz > NULL )
        {
              stream->Seek(0,0);
              stream->SaveToFile(name_file);
        }else
            result = false;
     }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0);  result = false;}
     delete stream;
     return result;
}
//---------------------------------------------------------------------------
bool save_jpeg( TField *field, ::Graphics::TBitmap *picture )
{
    assert(field);
    assert(picture);
    bool result = false;
    TMemoryStream *stream = new TMemoryStream;
    TBlobField *blob = (TBlobField *)field;
     try
     {
        picture->SaveToStream(stream);
        int sz = stream->Size;
        if( sz > NULL )
        {
              stream->Seek(0,0);
              blob->LoadFromStream(stream);
        }
     }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); result = false;}
     delete stream;
     return true;
}
//---------------------------------------------------------------------------
bool file2field( TField *field, String name_file )
{
    if( !FileExists( name_file ) )
        return false;
    assert(field);
    try
    {
        TBlobField *blob = (TBlobField *)field;
        blob->LoadFromFile( name_file );
    }catch(...){ return false;}
     return true;
}
//---------------------------------------------------------------------------
bool field2file( TField *field, String name_file )
{
    assert(field);
    try
    {
      TBlobField *blob = (TBlobField *)field;
      blob->SaveToFile( name_file );
    }catch(...){ return false;}
     return true;
}


в программе :


TImage *imageOnForm = new TImage(this);
TJPEGImage *jpeg = new TJPEGImage;

TADOQuery *rec = getRecordSet("SELECT pic FROM picture WHERE id_pic=1");

bool rs = load_jpeg( rec->Fields->Fields[0], jpeg );
rec->Close();
imageOnForm->Picture->Assign(jpeg);
// картинка на форме должна измениться
delete jpeg;
delete imageOnForm;

.....................

Комментарии


  • uvBlobLoader - загрузка/выгрузка BLOB полей базы данных

    Краткие сведения о утилите.
    Автор: Юрий Выровщиков
    Лицензия:Freeware
    Сайт: http://www.uvsoftium.ru/
    Назначение: Инструмент импорта/экспорта BLOB полей базы данных.
    Размер: 1,3 Мб (508 кб в архиве),
    Примечание: не требует установки

    Позволяет загружать картинки, тексты из файлов или буфера обмена в BLOB поля, и наоборот, сохранять их в файлы. Файлы, хранимые в BLOB полях можно просматривать с помощью внешнего приложения. Для SQL Server 7, 2000.

    Возможно пригодится.



Необходимо войти на сайт, чтобы оставлять комментарии

Раздел FAQ: Microsoft SQL Server / Скрипты / Другие / Вставка картинки (файла) в поле таблицы и работа с Blob полями