Кросплатформений GUI з доступом до SQLite в Lazarus

10.02.2026 0 By AdminA

Вступ

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, використання транзакцій та параметризованих запитів, а також тестування розгортання на цільових ОС. Далі можна розширювати функціонал, додаючи синхронізацію, авторизацію й більш складну логіку бізнес-процесів.

Comments

comments