Sqlite і firemonkey

З появою в Delphi XE2 FireMonkey іноді відчуваю себе прям якимось першокласником =) Не сказати, щоб прям вже так зовсім все незрозуміло і складно ... швидше трохи не звично використовувати нові FMX-контроли. Ось і сьогодні від теми статті так і нагадує щось з розряду «Delphi для початківців». Але, як говориться, з пісні слів не викинеш - раз вирішив попрацювати з FireMonkey, то починати треба з простих речей. Ну, а так як в статті про SQLite для Delphi XE2 була пропозиція розписати роботу з Grid'амі в FMX, то спробуємо написати невеликий додаток, яке буде заповнювати табличку на підставі запиту до бази SQLite.

У Delphi XE3 є підтримка SQLite через DBExpress, а також значно вдосконалений механізм LiveBindings, який якраз можна використовувати для заповнення таблиць даними з БД. Більш детальну інформацію по SQLite і LiveBindings в Delphi XE3 Ви можете дізнатися зі статей:

І на початку кілька слів про SQLite в Delphi. а точніше про ту обгортку з якою я буду працювати. Справа в тому, що це, напевно, найпростіша обгортка з усіх, що мені зустрічалися (власне цим вона мені і сподобалася). Тут немає компонентів, всі об'єкти в модулі SQLiteTable3 - це класи-спадкоємці від TObject, а вся робота безпосередньо пов'язана з запитами до бібліотеки SQLite (в Win-додатках - це буде sqlite3.dll). Природно, така організація роботи з SQLite накладає деякі обмеження на роботу з БД SQLite. Наприклад, я не можу взяти і без зайвих проблем використовувати TDataSet або використовувати також просто як і при роботі, наприклад, з MSSQL DBGrid - доведеться шукати своє рішення, використовувати TClientDataSet'и і т.д. Але, мені такі рішення в принципі не потрібні були. Єдиний раз коли мені доводилося використовувати TDataSet, TDBGrid і т.д. був років зо п'ять-сім тому і то все це «творчість» тоді використовувало BDE. Загалом, якщо у когось виникне бажання / потреба зв'язати цю обгортку з TDataSet - знайте, що зробити це просто і швидко навряд чи вийде. Ну, а я розгляну приклад того, як, використовуючи SQLiteTable2.pas можна формувати таблиці в додатку Firemonkey.

Як приклад, скористаємося базою даних, в якій буде міститися таблиця, розглянута в попередній статті про SQLite:

CREATE TABLE [TestTable] ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [StringRow] TEXT, [NumberRow] INTEGER, [DateTimeRow] DATETIME);

Тепер подивимося, що нам необхідно знати для того, щоб заповнити таблицю.

Для того, щоб заповнити таблицю на формі (не важливо яку - з FMX або VCL) нам необхідно знати крім значень полів набору даних ще як мінімум два значення: кількість полів (стовпців) і кількість записів (рядків) в таблиці. Інакше ми просто не зможемо правильно встановити кількість рядків і стовпців у нашого контрола на формі.

Для того, щоб працювати з самої БД ми повинні знати які таблиці в ній присутні.

Для прикладу створимо новий додаток «Firemonkey HD Application» і розмістимо на формі наступні елементи:

  1. TMemo - тут ми будемо переглядати / редагувати SQL-запити
  2. TStringGrid (зі вкладки Grids) - сюди будемо виводити результат виконання запиту
  3. 2 TButton для виконання операції підключення до БД і виконання SQL-запиту
  4. TComboBox - для зберігання списку таблиць БД
  5. TOpenDialog - для вибору файлу БД.

Зовнішній вигляд програми у мене вийшов ось такий:

Sqlite і firemonkey
При натисканні на кнопку «Connect» ми будемо підключатися до бази даних і зчитувати з неї назви всіх таблиць. Я запропонував використовувати БД з попередньої статті, але фактично додаток зможе працювати з будь-якої зазначеної вами БД, тому списочок отримувати ми будемо так:

  • Підключаємо в uses модулі

Схожі статті