Всем привет! Ну что, продолжаем рассматривать работу с файловыми базами данных в 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-файла, проект выглядит следующим образом: