SQLite — это компактная и эффективная система управления базами данных. В отличие от традиционных баз данных, которые требуют серверной части, SQLite не нуждается в сервере и напрямую встраивается в приложения.
Это идеально подходит для мобильных приложений, где ресурсы ограничены, а использование полноценного серверного решения нецелесообразно. Например, SQLite отлично подходит для приложений, которым необходимо хранить данные локально, таких как трекер личных финансов или приложение для медицинских записей, особенно если требуется офлайн-режим работы.
Текущая версия не поддерживает SQLite в веб-приложениях.
Рассмотрим, как можно использовать SQLite в приложении на примере приложения для заметок, где пользователи могут добавлять, обновлять и удалять записи. Вот как это будет выглядеть в итоге:
Вот шаги, необходимые для создания такого примера:
- Включение SQLite
- Настройка базы данных
- Добавление SQL-запросов
- Отображение всех заметок
- Добавление заметки
- Обновление заметки
- Удаление заметки
1. Включение SQLite
Чтобы включить SQLite в FlutterFlow, перейдите в Настройки и Интеграции > Интеграции > SQLite и включите переключатель Enable SQLite.
2. Настройка базы данных
На этапе настройки базы данных вам нужно будет загрузить файл базы данных SQLite и присвоить ему имя. Этот процесс важен для инициализации базы данных при запуске приложения.
Если у вас еще нет базы данных SQLite, вы можете легко создать ее с помощью инструментов, таких как sqlitebrowser. Просто загрузите sqlitebrowser, создайте новую базу данных, настройте таблицы и при необходимости добавьте данные. После подготовки базы данных загрузите файл в FlutterFlow для интеграции с вашим приложением.
Для этого примера мы создадим таблицу «Notes» с колонками ID
, Title
, Details
, DueDate
и IsCompleted
.
Вот как можно создать и настроить базу данных:
3. Добавление SQL-запросов
SQL-запросы — это инструкции, которые используются для взаимодействия с базой данных. Мы предлагаем возможность добавлять запросы в двух разделах:
1. Чтение данных
Включает запросы, которые извлекают данные из базы, но ничего не изменяют. Вот несколько примеров:
SELECT * FROM customers;
— извлечь все строки и столбцы.SELECT name, city FROM customers;
— извлечь определенные столбцы.SELECT * FROM customers WHERE city = 'New York';
— извлечь строки, которые соответствуют условию.
2. Обновление данных
Включает запросы, которые изменяют данные в базе, такие как:
INSERT INTO customers (name, address, city) VALUES ('John', '555 Main St', 'New York')
— добавление новых строк.UPDATE customers SET address = '123 Main Street' WHERE name = 'John'
— обновление существующих строк.DELETE FROM customers WHERE city = 'Chicago'
— удаление строк, которые соответствуют условию.
Ниже приведены запросы, которые понадобятся для этого примера:
1. GetAllNotes
Этот запрос извлекает все заметки из базы данных.
Select * from Notes
2. AddNote
Этот запрос добавляет новую заметку в базу данных.
INSERT INTO Notes (Title, Details, DueDate, IsCompleted) VALUES ('${title}', '${details}', ${dueDate}, 0);
3. UpdateNote
Этот запрос обновляет существующую заметку по ее ID.
UPDATE Notes
SET
Title = '${title}',
Details = '${details}',
DueDate = ${dueDate},
IsCompleted = ${isCompleted}
WHERE ID = ${id};
4. DeleteNote
Этот запрос удаляет заметку по ее ID.
DELETE FROM Notes WHERE ID = ${id};
4. Отображение всех заметок
Чтобы отобразить список заметок, можно использовать виджеты ListView и Container, чтобы создать страницу, которая будет выглядеть следующим образом:
Добавление SQLite-запроса:
Перейдите на страницу проекта и выполните следующие шаги для определения запроса SQLite:
- Выберите виджет (или страницу), к которому примените запрос.
- Выберите Backend Query в Панели свойств (правое меню).
- Нажмите Add Query и установите тип запроса SQLite Query.
- Выберите Query Name. (Здесь будут отображаться только запросы на чтение данных.) и нажмите Confirm.
После определения SQLite-запроса можно использовать данные, полученные из запроса, для отображения на виджетах. Следуйте шагам ниже:
- Выберите виджет (например, Text), на котором хотите отобразить данные.
- Из Панели свойств откройте меню Set from Variable > выберите строку [имя вашего запроса] >
выберите данные столбца, которые хотите отобразить, и нажмите Confirm.
В нашем примере срок выполнения хранится в виде Unix timestamp, что не очень удобно для отображения. Поэтому в примере проекта мы включили пользовательскую функцию, которая преобразует этот формат в удобный для пользователя.
5. Добавление заметки
Можно добавить новую заметку в базу данных, используя действие SQLite Query Action с типом запроса Update Query и именем запроса AddNote.
Вот как это делается:
6. Обновление заметки
Для обновления значений заметки, например, пометки о выполнении или изменения других полей, используйте действие SQLite Query Action с типом Update Query. Здесь имя запроса установите на Update Note.
Вот как это делается:
- В этом примере мы обновляем заметку на компоненте нижней панели (bottom sheet). Для лучшего пользовательского опыта изначально отображаются текущие значения заметки, чтобы пользователи четко понимали, что они будут редактировать. Чтобы отобразить значения заметки на нижней панели, мы передаем текущую заметку с типом SQLite Row.
7. Удаление заметки
Можно удалить существующую заметку из базы данных с помощью действия SQLite query, установив тип запроса на Update Query и имя запроса на Delete Note.
Часто задаваемые вопросы
Может ли SQLite обрабатывать сложные структуры данных по сравнению с переменными состояния приложения (App State Variables)?
Да, SQLite может обрабатывать сложные структуры данных гораздо эффективнее. Он позволяет структурировать хранение данных, выполнять сложные запросы, сортировку и фильтрацию, что трудно реализовать с использованием переменных состояния приложения.
Подходит ли SQLite для приложений, которым требуется офлайн-функциональность?
Абсолютно. SQLite хранит данные локально, что делает его отличным выбором для приложений, которые должны работать офлайн. Пользователи могут получать доступ к данным и изменять их без необходимости подключения к интернету.
Влияет ли использование SQLite на производительность приложения по сравнению с переменными состояния приложения?
SQLite разработан для того, чтобы быть легковесным и эффективным, поэтому обычно он не оказывает негативного влияния на производительность приложения. На самом деле, для больших объемов данных он более эффективен, чем хранение данных в переменных состояния приложения.
Как SQLite обеспечивает безопасность и целостность данных?
SQLite поддерживает целостность данных и транзакционные операции. Это означает, что он гарантирует сохранение согласованного состояния базы данных даже в случае неожиданных сбоев, таких как падение приложения или отключение питания.