Работа с файловыми базами данных в Delphi. Часть 2

3 минуты на чтение

xml_delphiВсем привет! Ну что, продолжаем рассматривать работу с файловыми базами данных в Delphi. Мы закончили прошлую статью на том, что мы сохранили нашу БД в XML-формат. Но не стоит забывать о том, что сохранять структуру таблицы, а также ее содержимое можно не только в файл, но и в поток памяти.

Как я говорил в прошлой статье, мы можем сохранить в файл с помощью контекстного меню, нажав по компоненту TClientDataSet правой кнопкой мыши. Но лучше воспользоваться методом, для сохранения в файл:

Procedure SaveToFile(const FileName:string; Format:TDataPacketFormat);

Либо же методом для сохранения в поток памяти:

Procedure SaveToStream(Stream:TStream; Format:TDataPacketFormat);

Первый параметр предполагает имя файла или поток, в которой будет сохранена структура таблицы, а также сами данные, а второй параметр в методах определяет формат сохраняемых данных, который может принимать следующие значения:

Значение параметра Описание Расширение файла
dfBinary Бинарный формат данных *.cds
dfXML XML формат *.xml
dfXMLUTF8 Также XML формат, только текст сохраняется в кодировке UTF-8 *.xml

Так, с методами сохранения таблиц мы разобрались, теперь давайте же рассмотрим методы, которые позволяют нам загрузить таблицу сразу из файла, либо же из потока памяти:

Procedure LoadFromFile(const FileName:string);

Выше метод для загрузки из файла, а что касается метода для загрузки из потока памяти, то он выглядит следующим образом:

Procedure LoadFromStream(Stream:TStream);

Ну что, теперь давайте попробуй сохранить структуру таблицы в файл. Пока что только структуру таблицы, так как мы ее не заполняли никакими данными. Итак, давайте для начала создадим не большой проект и поместим на форму следующие компонента:

  • TButton
  • TClientDataSet – на вкладке Data Access
  • TSaveDialog

Поэтому, на событие кнопки Onclick мы напишем примерно следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
   if SaveDialog1.Execute then
    ClientDataSet1.SaveToFile(SaveDialog1.FileName,dfXML);
end;

Давайте дополним наш проект следующими компонентами:

  • TDataSource – расположен на вкладку Data Access
  • TOpenDialog
  • TButton
  • TDBGRid

Давайте разбираться немного. Компонент TDataSource нам необходим, как источник данных. Компонент TOpenDialog нам необходим для того чтобы загружать в наш проект файловую базу данных. Компонент TButton понятно для чего – для загрузки, по нажатию на кнопку мы будем загружать файл в проект, ну и компонент TDBGRid нам необходим для отображения данных нашей файловой БД. Но так как данных у нас пока нет, будут отображаться просто поля.

Для начала нам необходимо связать компоненты. Поэтому, выделяем компонент TDataSource и в свойстве DataSet выбираем компонент TClientDataSet. Далее выделяем компонент TDBGrid и в свойстве DataSource, выбираем наш компонент TDataSource.

Почти все, нам теперь необходимо загрузить наш XML-файл в проект. Для этого на событие OnClick нашей кнопки пишем следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
   if OpenDialog1.Execute then
    ClientDataSet1.LoadFromFile(OpenDialog1.FileName);
   ClientDataSet1.Active:=True;
end;

В самом конце мы активируем наш набор данных, и он должен отобразиться в компоненте TDBGRid. У меня отобразились только лишь название полей, так как данных у меня нет. Вы же можете немного поэкспериментировать с сегодняшней статьей, ну а в следующей статье мы рассмотрим необходимую структуру XML-файла, чтобы он корректно отображался в нашем проекте, а также рассмотрим то, как можно добавлять, редактировать, удалять данные из файловой базы данных.

У меня после загрузки XML-файла, проект выглядит следующим образом:

file-bd-delphi_1

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем привет дорогие друзья! Продолжаем нашу тему, в которой мы рассматриваем работу с файловыми базами данных в Delphi. Мы продвигаемся постепенно, в первой статье рассмотрели общую структуру, во второй статье мы рассмотрели, как можно сохранять и открывать на...
Всем привет! Продолжаю рассматривать работу с файловыми базами данных в Delphi. Не знаю, сколько еще статей напишу, но пока что продолжаю. Сегодняшняя статья будет посвящена работе с агрегирующими функциями, а также агрегатными полями. Согласитесь, что агрегир...
Всем привет ребята! Продолжаем рассматривать работу с базами данных в Delphi. Сегодня мы начнем рассматривать базы данных, которые работают на файлах. Да, сейчас базы данных на файлах не настолько популярны, но раньше они расправлялись с хорошим объемом информ...