Иллюстрированный самоучитель по Kylix


Листинг 18 1 Содержание типичного файла базы данных



Листинг 18.1. Содержание типичного файла базы данных

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="ID" fieldtype="i4" readonly="true" SUBTYPE="Autoxnc" />
<FIELD attrname="Name" fieldtype="string" WIDTH="50" />
</FIELDS>
<PARAMS DEFAULT_ORDER="" AUTOINCVALUE="1" />
</ METADATA>
<ROWDATA />
</DATAPACKET>

В первой строке содержится заголовок:

<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>

Вторая строка содержит корневой тэг документа:

<DATAPACKET Version="2.0">

Всю остальную часть файла можно разделить на две части:

  • данные о структуре таблицы базы данных, хранимые в файле (метаданные);
  • непосредственно записи.

Метаданные хранятся в тэге METADATA, а записи — в тэге ROW DATA. После создания новой таблицы базы данных тэг ROWDATA будет пустым.

Внутри тэга METADATA расположены описания полей таблицы (тэг FIELDS и вложенные в него тэги) и другая служебная информация (порядок сортировки по умолчанию, начальное значение автоматически увеличивающегося счетчика).

Теперь давайте запустим наше приложение, вставим в таблицу новую запись, закроем приложение и посмотрим, как изменился xml-файл.

Мы видим, что изменился тэг PARAMS:

<PARAMS CHANGE_LOG="1 0 4" AUTOINCVALUE="2" DEFAULT_ORDER="" />

Кроме того, тэг ROWDATA тоже изменился:

<ROWDATA>
<ROW RowState="4" ID="1" Name="e?AI?" />
</ROWDATA>

Если вы внимательно посмотрите на изменения, то увидите, что внутри таблицы ведется журнал операций. Это дает возможность сделать отмену произведенных действий.

Если вам не нужно, чтобы этот журнал велся, в режиме выполнения программы установите свойство LogChanges в false.

Рассмотрим установку отношений таблиц "главный-подчиненный" (master-detail).

Новым способом организации отношения master-detail в Kylix стало использование вложенных наборов данных. Предположим, что нам нужно получить информацию о покупках, сделанных клиентом.

Сначала очистим набор данных Сlients. Для этого щелкнем правой кнопкой мыши на компоненте Сlients и в выпадающем меню выберем пункт очистки данных Clear Data.

Введем дополнительное описание полей Оrders типа ftDataSet. Данный тип поля предназначен для хранения внутри себя наборов данных. Список полей вложенного набора данных устанавливается в свойстве ChildDefs. Определим в ChildDefs следующие поля (табл. 18.2).



Начало Назад Вперед


Книжный магазин