2.2 Хранение OLE-объектов в базах данных
Для хранения OLE-объектов могут быть использованы как поля специальных типов (поддерживаемые, например, Paradox или dBase)., так и обычные blob-поля.
Основная идея такого приложения заключается в том, что OleContainer позволяет сохранить содержащийся в нем объект в файле или в памяти, а затем поместить его в blob-поле.
Модифицируем созданное приложение, добавив компоненты TTable, TdataSource и TDBNavigator и заменив надписи на кнопках на "Сохранить" и "Показать". Создадим копию таблицы biolife.db из набора демонстрационных примеров, свяжем с ней компонент TTable и создадим набор объектов TFields. Свяжем TDataSource c TTable и TDBNavigator с TDataSource.
Изменим обработчики событий:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (OleContainer1->OleObjectInterface!=NULL)// определим, не пуст ли контейнер
{OleContainer1->SaveToFile("aaa.dat");
Table1->Edit();
Table1Graphic->LoadFromFile("aaa.dat");}
}
//-----------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Table1Graphic->SaveToFile("aaa.dat");
OleContainer1->LoadFromFile("aaa.dat");
}
Теперь, если TOleContainer не пуст, при нажатии на кнопку "Сохранить" его содержимое сохранится в blob-поле таблицы, а при нажатии на кнопку "Показать" OLE-объект из blob-поля отобразится в TOleContainer.
Рис.12. Неактивный OLE-объект, изъятый из blob-поля при нажатии на кнопку "Показать"
Назад |
Содержание |
Вперед