Пустой результат выборки в Dart
Не каждый SELECT возвращает много строк.
Иногда нужна одна запись или проверка, что совпадений
нет. Результат все равно перебирают в цикле или
смотрят свойство isEmpty.
Если выборка нашла строку с уникальным ключом, достаточно взять первый элемент или один проход цикла:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('single_hit.db');
db.execute('''
CREATE TABLE IF NOT EXISTS tokens (
id INTEGER PRIMARY KEY,
secret TEXT NOT NULL
)
''');
db.execute("INSERT INTO tokens (secret) VALUES ('x-ray')");
var rows = db.select(
'SELECT secret FROM tokens WHERE id = ?',
[1],
);
if (rows.isNotEmpty) {
print(rows.first['secret']);
}
db.dispose();
Когда условие никому не подошло, набор пуст. Это нормальный результат, а не ошибка протокола:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('single_hit.db');
var rows = db.select(
'SELECT secret FROM tokens WHERE id = ?',
[99],
);
if (rows.isEmpty) {
print('empty');
}
db.dispose();
Создайте таблицу passes в gate.db,
вставьте пропуск "vip-1" и выведите его,
если выборка по id 1 нашла строку.
Запросите id 100 и выведите
"none", когда строка не найдена.