Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

28.Работа с локальными бд

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

28.1. Драйвер баз данных bde

BDE (Borland Database Engine) – это специальный драйвер баз данных, который обязательно должен быть установлен на компьютере, чтобы на нем можно было запускать программы на Delphi, работающие с БД. Если на машине уже установлен Delphi, BDE ставится автоматически. В противном случае необходимо сделать это вручную следующим образом:

1. На машине с установленным Delphi найдите файл bdeinst.cab. По умолчанию он находится в каталоге C:\Program Files\Common Files\Borland Shared\BDE.

2. Откройте этот файл при помощи архиватора WinRAR (cab – это архив) и извлеките из него файл bdeinst.dll.

3. Перенесите файл bdeinst.dll на компьютер, где необходимо установить BDE.

4. С командной строки (меню "Пуск""Выполнить" или при помощи программ типа Far Commander) выполните команду:

regsvr32 bdeinst.dll

Разумеется, при этом текущей должна быть та директория, куда вы скопировали файл bdeinst.dll. Если все сделано правильно, запустится процесс установки BDE. Далее просто отвечайте ОК на все запросы.

Ваша программа должна проверять, установлен ли BDE, до начала работы с базами, иначе она "свалится" по ошибке. Проверка наличия BDE делается так (жирным выделен добавляемый вами текст):

USES {..………………………..},BDE;

VAR

SV : SysVersion;

BEGIN

Application.Initialize;

IF (dbiGetSysVersion(SV)<>DBIERR_None) OR (SV.iVersion<400) THEN

BEGIN

MessageDlg('На Вашем компьютере не установлен BDE. Дальнейшая работа программы невозможна',mtError,[mbOK],0);

Halt(1)

END;

Данный код пишется в головном файле проекта (с расширением dpr). Чтобы до него добраться, в Delphi выполните команду Project  View Source. В секцию USES добавьте модуль BDE. Перед BEGIN опишите переменную SV. Далее найдите строчку Application.Initialize и после нее впишите приведенный выше фрагмент.

28.2. Создание баз данных

Собственно создание БД, а также ее заполнение можно выполнить при помощи программы Database Desktop, входящей в комплект поставки Delphi. Ее ярлык по умолчанию находится в главном меню ПрограммыBorland Delphi6Database Desktop.

Мы будем использовать базы формата Paradox версии 7. Этот формат широко распространен и удобен в работе. Предположим, мы хотим создать БД для хранения информации о домашней коллекции DVD-дисков. Для каждого диска нужно запомнить следующую информацию: название фильма на русском языке и на языке оригинала, номер диска в коллекции, продолжительность фильма, наличие субтитров, год выпуска.

Имена полей в БД Paradox даются согласно следующим правилам:

• Имя должно быть не длиннее 25 символов.

• Имя не должно начинаться с пробела, однако может содержать пробелы. Разумнее будет избегать включения пробелов в название поля. Фактически, в целях переносимости лучше ограничиться девятью символами в названии поля, не включая в него пробелы.

• Имя не должно содержать квадратные, круглые или фигурные скобки [], () или {}, тире, а также комбинацию символов «тире» и «больше» (—>).

• Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.

• Имя не должно совпадать с одним из зарезервированных слов языка SQL (см. Приложение 1). Поэтому поле для хранения года назовем не YEAR (это зарезервированное слово), а YEARF.

Тогда структура нашей БД будет иметь следующий вид (Рис. 28 .117):

Имя поля

Тип данных

Размер

ID

автоинкремент

-

NAME_RUSSIAN

текст

250 символов

NAME_ENGLISH

текст

250 символов

NUMBER

целое число

-

SUBTITLES

булевский

-

YEARF

целое число

-

Рис. 28.117 Структура БД "DVD-диски".

Запустим Database Desktop. Прежде всего, данная программа имеет небольшой "глюк" – в ней не отображаются русские буквы в базах данных, что весьма неудобно. Для лечения данной проблемы войдите в меню EditPreferences, щелкните по кнопке Change и выберите из списка шрифт, название которого оканчивается на Cyr, например, Courier New Cyr. После этого перезапустите Database Desktop.

Для создания новой БД выполните команду FileNewTable. При этом открывается окно выбора формата базы. Оставьте значение по умолчанию – Paradox7. В ряде случаев из-за еще одной ошибки в программе после этого выскакивает сообщение Unknown operating system error. Не обращайте на него внимания, жмите ОК.

Рис. 28.118 Окно ввода структуры БД.

На экране вы увидите таблицу структуры БД (Рис. 28 .118). Для ввода типа поля нажмите пробел, находясь в колонке Type таблицы, и выберите нужный тип. Возможны следующие варианты:

Alpha. Строка длиной 1-255 байт, содержащая любые печатаемые символы.

Number. Числовое вещественное поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел — от 10-308 до 10308 с 15 значащими цифрами.

$ (Money). Числовое поле, значение которого может быть положительным и отрицательным. По умолчанию, является форматированным для отображения десятичной точки и денежного знака.

Short. Числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767.

Long Integer. Числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648.

# (BCD). Числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность — гораздо выше. Может иметь 0..32 цифр после десятичной точки.

Date. Поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры — до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты.

Time. Поле времени длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено 24 часами.

@ (Timestamp). Обобщенное поле даты длиной 8 байт — содержит и дату и время.

Memo. Поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1..240) — остальные символы сохраняются в отдельном файле с расширением .MB. Увы, Database Desktop не позволяет просматривать или изменять поля типа Memo.

Formatted Memo. Поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) — остальные символы сохраняются в отдельном файле с расширением .MB. Увы, Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo.

Graphic. Поле, содержащее графическую информацию. Может иметь любую длину. Смысл размера — такой же, как и в поле типа Formatted Memo. Database Desktop умеет создавать поля типа Graphic, однако наполнять их можно только в вашем приложении.

OLE. Поле, содержащее OLE-данные (Object Linking and Embedding) — образы, звук, видео, документы — которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера — такой же, как и в Formatted Memo. Database Desktop умеет создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi напрямую не умеет работать с OLE-полями.

Logical. Поле длиной 1 байт, которое может содержать только два значения — Т (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы.

+ (Autoincrement). Поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1 — это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Paradox таковой отсутствует).

Binary. Поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0..240) — остальные символы сохраняются в отдельном файле с расширением .MB.

Bytes. Строка цифр длиной 1..255 байт, содержащая любые данные.

Очевидно, в нашем случае для полей NUMBER и YEAR можно использовать тип Long Integer.

После занесения всей структуры таблицы очень важно не забыть установить правильную кодировку символов в БД. По умолчанию установлена кодировка, не поддерживающая русские буквы. Чтобы это исправить, в списке Table Properties выберите значение Table Language, затем щелкните по кнопке Modify и из нового списка выберите значение Pdox ANSI Cyrillic.

Теперь можно сохранить БД в выбранной вами директории при помощи кнопки Save as. Откройте сохраненную таблицу в том же Database Desktop (меню FileOpenTable). Включите режим редактирования при помощи клавиши F9 или кнопки . Добавьте несколько строчек в базу (рис. 10). Обратите внимание, как при этом автоматически заполняется поле ID. Крайнее слева "поле" с именем, совпадающим с именем файла БД, является просто счетчиком записей. Не пытайтесь его редактировать.

Рис. 28.119 Заполнение БД.

Важная особенность баз данных состоит в том, что заносимая информация попадает в базу сразу, не требуя специальных команд сохранения. Если просто закрыть Database Desktop, вся введенная информация сохранится.

При заполнении поля логического типа следует вводить в него буквы T или F.

Если при редактировании БД вы меняли экранную ширину полей, перетаскивая их границы, то перед выходом из Database Desktop просит: The view properties for this table have changed. Do you want to save them? Если ответить Yes, заданная вами экранная ширина колонок сохранится на диске в виде файла с расширением tv. Обычно такое сохранение не требуется, поэтому рекомендуется щелкнуть по кнопке No.