Кросплатформений GUI з доступом до SQLite в Lazarus
10.02.2026Вступ
Lazarus + Free Pascal дають зручний шлях для швидкої розробки кросплатформених GUI-додатків. У цій статті розберемо створення невеликого додатку з базою даних SQLite: як налаштувати з’єднання, показувати записи у таблиці, робити CRUD-операції та підготувати програму до розгортання на Windows і Linux.
Що знадобиться
- Lazarus IDE (остання стабільна версія).
- Бібліотека SQLite (на Windows — sqlite3.dll, на Linux — libsqlite3.so, зазвичай встановлена).
- Базові знання Pascal і компонентної розробки у Lazarus.
Крок 1: Підготовка проекту
Створіть новий проект Application у Lazarus. В настройках проекту переконайтеся, що в Uses додаються модулі SQLite3Conn, SQLDB і DB — вони потрібні для роботи з SQLite та бачдатасетами.
Додавання компонентів на форму
На форму розмістіть такі компоненти (з палети SQLDB/Databases):
- TSQLite3Connection — компонент для фізичного з’єднання з файлом бази.
- TSQLTransaction — управляє транзакціями.
- TSQLQuery — для виконання SQL-запитів.
- TDataSource — з’єднує датасет з візуальними компонентами.
- TDBGrid — для відображення таблиць.
Налаштуйте зв’язки між ними: в полі Connection компонентів TSQLQuery встановіть посилання на TSQLite3Connection, а в полі DataSet компонента TDataSource — на TSQLQuery. Для Transaction вкажіть ваш TSQLTransaction і не забудьте прив’язати Transaction у TSQLite3Connection.
Крок 2: Ініціалізація бази даних
У події OnCreate форми можете перевіряти наявність файлу бази та створювати таблиці при потребі:
procedure TForm1.FormCreate(Sender: TObject);
begin
SQLite3Connection1.DatabaseName := 'data.db';
SQLite3Connection1.Open;
SQLTransaction1.StartTransaction;
SQLQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS items(id INTEGER PRIMARY KEY, name TEXT, qty INTEGER)';
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
SQLQuery1.SQL.Text := 'SELECT * FROM items';
SQLQuery1.Open;
end;
Крок 3: CRUD-операції
Реалізація створення, читання, оновлення і видалення досить стандартна. Використовуйте параметризовані запити для безпеки та зручності:
procedure AddItem(const AName: string; AQty: Integer);
begin
SQLTransaction1.StartTransaction;
SQLQuery1.Close;
SQLQuery1.SQL.Text := 'INSERT INTO items(name, qty) VALUES(:name, :qty)';
SQLQuery1.Params.ParamByName('name').AsString := AName;
SQLQuery1.Params.ParamByName('qty').AsInteger := AQty;
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
SQLQuery1.SQL.Text := 'SELECT * FROM items';
SQLQuery1.Open;
end;
Аналогічно можна реалізувати update та delete, використовуючи WHERE id = :id.
Крок 4: Інтерфейс користувача
TDBGrid дозволяє автоматично показувати вміст запиту. Додайте кнопки для додавання/редагування/видалення, поля вводу для імені та кількості. При виборі рядка у TDBGrid можна заповнювати поля для редагування.
Поради по UX
- Блокувати кнопки під час виконання транзакцій.
- Додавати підтвердження перед видаленням запису.
- Показувати повідомлення про успішні операції або помилки.
Крок 5: Розгортання і кросплатформеність
Lazarus компілює під різні ОС. Для Windows зазвичай потрібна бібліотека sqlite3.dll поруч із exe. Для Linux достатньо, щоб libsqlite3 була встановлена в системі. Перевірте також різницю в шляхах до файлу бази: на Windows можна зберігати файл поруч із exe або в AppData, на Linux — в ~/.local/share або в каталозі програми.
Поради з розгортання
- Тестуйте програму на цільових ОС у чистому середовищі.
- Використовуйте відносні шляхи або визначайте директорію даних на основі спеціальних змінних оточення.
- Якщо потрібно, збирайте інсталятор або пакунок для зручності користувача.
Оптимізація та розширення
Якщо даних багато, краще використовувати пагінацію або запити з обмеженнями. Для багатокористувацького доступу SQLite не є найкращим вибором — розгляньте серверні СУБД. Можна додати кешування, індекси та інтерфейс для імпорту/експорту CSV.
Висновок
Створення кросплатформенного GUI-додатку з SQLite у Lazarus — швидкий і практичний шлях для невеликих проєктів. Головні елементи: правильне налаштування компонентів SQLDB, використання транзакцій та параметризованих запитів, а також тестування розгортання на цільових ОС. Далі можна розширювати функціонал, додаючи синхронізацію, авторизацію й більш складну логіку бізнес-процесів.
