Lazarus tdbf tutorial

Це керівництво описує основи розробки баз даних з використанням компонента TDbf (by Micha Nelissen) в Lazarus. Додаткова документація по TDbf також доступна. Ця сторінка була створена Tony Maro але інші контрибуторів також вітаються!







Документацію компонента TDbf в форматі pdf дивіться на SourceForge. Корисно зберегти цей pdf і звертатися до нього в міру прочитання цієї статті.

Що нам знадобиться

Цей документ був написаний з версією Free Pascal Compiler 2.3.1 / Lazarus 0.9.23.

Пакет DbfLaz встановлений за замовчуванням.

Що забезпечує TDbf

TDbf забезпечує доступ до таблиць баз даних dBase і FoxPro для Lazarus (і інших IDE), з огляду на читання, запис і створення dBase III +, dBase IV, Visual dBase VII і FoxPro таблиць. Все це робиться без використання додаткових бібліотек або движків бази даних. Просто розмістіть компонент TDbf на вашій формі, і Ви маєте миттєвий доступ в навколишньому середовищі бази даних на різних платформах. TDbf працює і в Windows і в Linux використовуючи Лазарус.

Як створити нову таблицю бази даних

Оскільки для Lazarus може бути відсутня програма на зразок "Database Desktop", ми повинні створити нову базу даних в коді.

установка шляху

Доброю думкою буде виділення для бази даних Вашого застосування власного каталогу. Це спростить резервування даних. Є два варіанти установки шляху. Ви можете встановити повний шлях використовуючи властивість FilePathFull, або встановити шлях щодо застосування своїх за допомогою властивості FilePath. Ніпрімер, установка "FilePath" під час виконання до "data /" буде використовувати субдіректоріі data тільки в директорії виконуваного файлу. Установка властивості "FilePathFull" до "/ var / data /" буде розміщувати точно за вказаним шляхом, ігноруючи розташування додатки.

вибір TableLevel

За замовчуванням, TDbf створює таблиці dBase IV. Хоча це і найбільш сумісне, деякі можливості, які Вам можуть знадобитися, не підтримуються. Для підтримки Автоінкрементний полів ви повинні використовувати дещо новіше. Типи таблиць можуть бути наступними.

  • 3 dBase III +
  • 4 dBase IV
  • 7 Visual dBase VII
  • 25 FoxPro

Ви вибираєте тип таблиці установкою властивості TableLevel відповідно.

Додавання полів

Створення полів для Вашої нової таблиці під час виконання в більшості слід старим стандартом Delphi. Як тільки ви встановили свої значення для властивостей FilePath, TableLevel, і TableName, маніпулюйте властивістю FieldDefs щоб визначити структуру. наприклад:

Типи полів визначені як:

  • ftUnknown
  • ftString
  • ftSmallInt
  • ftInteger
  • ftWord
  • ftBoolean
  • ftFloat
  • ftCurrency (TableLevel 25)
  • ftBCD (TableLevel 25)
  • ftDate
  • ftTime
  • ftDateTime
  • ftBytes (TableLevel 25)
  • ftVarBytes
  • ftAutoInc (TableLevel 7 or 25)
  • ftBlob
  • ftMemo
  • ftGraphic
  • ftFmtMemo
  • ftParadoxOle
  • ftDBaseOle
  • ftTypedBinary
  • ftCursor
  • ftFixedChar
  • ftWideString
  • ftLargeInt
  • ftADT
  • ftArray
  • ftReference
  • ftDataSet
  • ftOraBlob
  • ftOraClob
  • ftVariant
  • ftInterface
  • ftIDispatch
  • ftGuid
  • ftTimeStamp
  • ftFMTBcd






Виділені жирним типи полів підтримуються

Йдемо далі і створюємо!

Як тільки ви визначили поля, які хочете використовувати у вашій новій таблиці, ви можете йти далі і створити таблицю:

Як додати індекси в таблицю

Якщо Ваша база даних складається з великого числа записів, Вам може знадобитися визначити індекси щоб здійснювати більш швидкий пошук по таблиці. Щоб змінити структуру індексів таблиці, ми повинні мати ексклюзивний доступ до таблиці - який ми так чи інакше име чи б, створюючи таблицю.

Тепер, нам необхідно просто додати індекси.

Зберемо все разом і отримаємо.

Наступний приклад створює нову таблицю "customers" в коді. Звичайно, це необхідно виконати тільки один раз, і після цього всього лише ВІДКРИВАТИ таблицю, не створюючи її заново ;-)

Зовнішні індексні файли

TDbf також підтримує зберігання вторинних індексів в роздільних файлах. Це може допомогти в разі якщо очікується дуже великий розмір бази даних. Файли вторинних індексів створюються ідентично звичайним індексам, але з додаванням розширення файлу '.ndx':


Кожен раз при відкритті TDbf, необхідно завантажити файл індексів:


Також індекси повинні бути опис включаючи розширення:


Індексні файли можуть бути упаковані простим використанням:

Як приєднати TDbf до компонентів доступу до даних

Приклад, описаний раніше, показує, як створити нову таблицю бази даних програмно. Використання цієї таблиці більш ніж просте.

Компоненти доступу до даних в Lazarus (як наприклад TDbEdit) вказують на компонент TDataSource використовуючи свої властивості "DataSource" і "DataField". Компонент TDataSource обробляє з'єднання між движком бази даних і компонентами доступу до даних. Потім компонент TDataSource вказує на компонент TDbf використовуючи його властивість "DataSet". Зв'язок нагадує наступне:


Переконайтеся, що Ви встановили властивості FilePath (або FilePathFulll), TableLevel, і TableName вашого компонента TDbf перед викликом


Можна сказати набагато більше про програмуванні баз даних в Lazarus, і я рекомендую хорошу книгу або дві про програмування баз даних в Delphi, так як основні поняття однакові. Я постійно звертаюся до своєї копії "Delphi 2 Unleashed" тому що концепції та базовий код не змінюються вже 8 років.

Упаковка і перебудова таблиць

Коли запис видаляється, насправді вона фізично залишається в таблиці. Періодично Ви повинні "пакувати" таблицю щоб відновити втрачене місце. Це може бути зроблено установкою ексклюзивного режиму доступу.

Ставлення головною / підпорядкованої таблиць

Справжня сила програмування баз даних починається тоді, коли Ви маєте кілька таблиць, які посилаються один на одного. Поки TDbf не підтримує кількість посилань цілісність, але підтримує уявлення "головна / підпорядкована" між таблицями TDbf.

Припустимо, що є дві взаємопов'язані таблиці, наприклад:


Якщо ви хотіли показати все накладні для наданого клієнта, підпорядкована таблиця (invoices) може залишатися синхронізованою з головною таблицею (customers) автоматично.

На компоненті накладні TDbf встановлюють наступне:

Приклад програми - DB Browser

необхідно врахувати

В даний час немає ніякої підтримки посилальної цілісності або шифрування всередині .dbf файлів.