Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка Jpg изображения в БД 
:(
    Опции темы
Martin_8
Дата 30.3.2008, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.10.2006
Где: Минск

Репутация: нет
Всего: нет



Здравствуйте. Хочу сделать загрузку jpg изображений в таблицу, в поле имеющее тип image. Использую SQL Server 2000.
Взял за основу эту статью http://bcbsql.narod.ru/pub/risinbd.htm

Цитата

О хранении рисунков в базе данных
    Бывают случаи, когда возникает необходимость в хранении в базе данных различного рода рисунков. Например, фотографий сотрудников для программы отдела кадров.
    Не вдаваясь в полемику - стоит ли хранить рисунки в базе данных, давайте рассмотрим простой пример работы с рисунками в формате *.jpg. Наше приложение позволит найти на диске рисунок в этом формате и сохранить его в таблице, а также прочесть из таблицы записанный рисунок и воспроизвести его. Для простоты изложения, определим ограничение тестовой таблицы, что наша таблица будет иметь только одно поле "picture" типа image и выводиться на просмотр будет последний вставленный в таблицу рисунок (в реальном рабочем приложении этого ограничения конечно же не будет).
    Создадим новое приложение. На форму положим 2 кнопки и определим их свойства:


Button1->Caption="Save";
Button2->Caption="Load";

Добавим компонент Image и также определим его свойство:


Image1->AutoSize=true;

Теперь добавим на форму OpenDialog со свойствами:


OpenDialog1->DefaultExt="*.jpg";
OpenDialog1->Filter="JPG, JPEG|*.jpg|All|*.*";

    Для подключения к тестовой базе данных положим на форму компонент ADOConnection и укажем в свойстве ConnectionString необходимые параметры для подключения к базе данных. Добавим компонент ADOTable и в свойстве Connection сошлемся на ADOConnection1. В свойстве TableName выберем нашу таблицу. На этом подготовительные действия закончены.
    Теперь для начала необходимо зарегистрировать формат *.jpg, чтобы можно было с ним работать. Для этого в конструкторе формы пропишем:


__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
   TPicture *Picture = new TPicture();
   Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage));
   delete Picture;
}

Создадим функцию записи рисунка в базу данных SavePict:


void __fastcall TForm1::SavePict(void)
{
   ADOTable1->Active=true;
   ADOTable1->Insert();
   TMemoryStream *M = new TMemoryStream();
   OpenDialog1->Execute();
   M->LoadFromFile(OpenDialog1->FileName);
   TStream *B = ADOTable1->CreateBlobStream(ADOTable1->FieldByName("picture"),bmWrite);
   B->CopyFrom(M,M->Size);
   delete B;
   ADOTable1->Post();
   delete M;
   ADOTable1->Active=false;
   DeleteFile(OpenDialog1->FileName);
}

Создадим функцию чтения рисунка из базы данных LoadPict:


void __fastcall TForm1::LoadPict(void)
{
   ADOTable1->Active=true;
   ADOTable1->Last();
   TMemoryStream *M1 = new TMemoryStream();
   TStream *B1 = ADOTable1->CreateBlobStream(ADOTable1->FieldByName("picture"),bmRead);
   M1->CopyFrom(B1,B1->Size);
   M1->SaveToFile("pic1.jpg");
   delete B1;
   delete M1;
   ADOTable1->Active=false;
}

Осталось задействовать наши кнопки:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
   SavePict();
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   LoadPict();
   Image1->Picture->LoadFromFile("pic1.jpg");
}



Пишу как в статье:
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   TPicture *Picture = new TPicture();
   Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage)); // ошибка
   delete Picture;
}

Но уже при регистрации формата jpg в конструкторе формы появляются ошибка.

Подскажите пожалуйста, почему она возникаети как это можно исправить ?
PM   Вверх
586
Дата 30.3.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(Martin_8 @  30.3.2008,  23:08 Найти цитируемый пост)
// ошибка

какая ошибка?

#include <jpeg.hpp>
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.