Условие в SQL-выборке в Dart
Ключевое слово WHERE оставляет только строки,
где предикат истинен. Значение из Dart безопаснее
передавать через ?, а не вшивать в текст.
Подготовленный SELECT с одним параметром
ищет записи по совпадению поля:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('filter_demo.db');
db.execute('''
CREATE TABLE IF NOT EXISTS tags (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
group_code TEXT NOT NULL
)
''');
db.execute(
"INSERT INTO tags (name, group_code) VALUES ('alpha', 'g1')",
);
db.execute(
"INSERT INTO tags (name, group_code) VALUES ('beta', 'g2')",
);
var rows = db.select(
'SELECT name FROM tags WHERE group_code = ?',
['g1'],
);
for (var row in rows) {
print(row['name']);
}
db.dispose();
Смена аргумента меняет набор строк без нового SQL.
Числовые поля сравнивают через параметр и операторы
вроде >=:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('filter_demo.db');
var rows = db.select('''
SELECT name FROM tags
WHERE group_code = ? AND id >= ?
''', ['g2', 1]);
for (var row in rows) {
print(row['name']);
}
db.dispose();
Создайте таблицу shifts в plant.db
с полями worker, shift_code
и hours, добавьте три строки и выведите
имена, где hours не меньше 8.
Выведите имена смен с кодом смены "night",
используя параметр в условии по полю
shift_code.