Створення кросплатформового додатку з базою даних у Lazarus
09.04.2026Вступ
Lazarus — потужне середовище для розробки на Free Pascal, яке дозволяє швидко створювати кросплатформові графічні застосунки. У цій статті ми реалізуємо невеликий додаток з локальною базою даних SQLite: створимо форму для відображення та редагування записів, підключимо компоненти SQLDB і зробимо базові операції CRUD (Create, Read, Update, Delete).
Що знадобиться
- Встановлений Lazarus IDE (версія 2.x або новіша).
- Бібліотека SQLite (зазвичай входить у пакет або доступна як модуль).
- Базові знання Object Pascal і роботи з компонентами форми.
План роботи
- Створити проєкт і форму
- Додати компоненти для роботи з SQLite
- Налаштувати зв’язки між компонентами і DBGrid
- Реалізувати кнопки для CRUD-операцій
- Зібрати і протестувати на різних платформах
Крок 1 — створення проєкту і інтерфейсу
У Lazarus створіть новий проект типу “Application”. На основну форму розмістіть наступні компоненти (без атрибутів):
- TSQLConnector або TSQLite3Connection
- TSQLTransaction
- TSQLQuery
- TDatasource
- TDBGrid для відображення записів
- Кнопки: Додати, Зберегти, Видалити, Оновити
Зв’яжіть TSQLQuery.Transaction з TSQLTransaction, а DataSource.DataSet з TSQLQuery. DBGrid.DataSource встановіть у ваш DataSource.
Крок 2 — налаштування SQLite
Якщо використовуєте TSQLite3Connection, вкажіть шлях до файлу бази даних у властивості DatabaseName. Для створення бази при першому запуску можна перевіряти наявність файлу і створювати таблицю стандартним SQL-запитом.
Приклад ініціалізації (псевдокод)
procedure TForm1.FormCreate(Sender: TObject);
begin
SQLiteConn.DatabaseName := ExtractFilePath(Application.ExeName) + 'data.db';
SQLiteConn.Open;
SQLTransaction1.StartTransaction;
SQLQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);';
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
LoadData;
end;
Крок 3 — завантаження і відображення даних
Реалізуйте процедуру LoadData, яка наповнює TSQLQuery і відкриває набір результатів для DBGrid:
procedure TForm1.LoadData;
begin
SQLQuery1.Close;
SQLQuery1.SQL.Text := 'SELECT * FROM people ORDER BY id';
SQLQuery1.Open;
end;
Крок 4 — реалізація CRUD-операцій
Додати новий запис можна через SQL INSERT або через механізми TSQLQuery.Append/ApplyUpdates. Приклад вставки через SQL:
procedure TForm1.btnAddClick(Sender: TObject);
begin
SQLTransaction1.StartTransaction;
SQLQuery1.Close;
SQLQuery1.SQL.Text := Format('INSERT INTO people (name, age) VALUES (''%s'', %d)', [EditName.Text, StrToIntDef(EditAge.Text, 0)]);
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
LoadData;
end;
Оновлення і видалення реалізуються подібно: UPDATE та DELETE з відповідним WHERE по id або через редагування запису в TSQLQuery і виклик ApplyUpdates/Commit.
Крок 5 — обробка помилок і тестування
Додайте обробку виключень при відкритті з’єднання і виконанні запитів, щоб уникнути аварійних завершень і повідомляти користувача про помилки. Тестуйте додаток на різних сценаріях: порожні введення, некоректні типи, одночасний доступ до файлу бази.
Крок 6 — збірка і деплой
Lazarus дозволяє збирати проект для Windows, Linux і macOS (за наявності відповідних крос-компіляторів). Переконайтеся, що в дистрибутив включено файл бази або механізм його створення при першому запуску. Для Windows зручно використовувати виконуваний файл і папку з data.db; для Linux — розміщувати файл у конфігураційній директорії користувача.
Поради та кращі практики
- Використовуйте транзакції для груп операцій — це підвищує надійність і швидкість.
- Зберігайте шлях до бази динамічно, щоб уникнути проблем з правами доступу.
- Розділяйте логіку доступу до даних від інтерфейсу — це полегшить тестування і підтримку.
- Регулярно робіть бекапи файлу SQLite, особливо при оновленнях структури таблиць.
Висновок
Створення простого кросплатформового додатку з базою даних у Lazarus не потребує складних налаштувань. Використовуючи TSQLite3Connection, TSQLTransaction, TSQLQuery і TDBGrid, ви можете швидко реалізувати інтерфейс для роботи з даними і підготувати проєкт для розповсюдження на різні платформи. Далі можна розширювати застосунок: додати фільтри, сортування, експортування даних і більш складну бізнес-логіку.