Пустое значение поля SQL в Dart
Значение NULL в SQL означает отсутствие данных, а не
пустую строку. Колонку без NOT NULL можно
оставить незаполненной при INSERT.
Для SQL NULL обращение к полю в Dart дает
null. Отдельно проверяют значение перед
выводом:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('nulls.db');
db.execute('''
CREATE TABLE IF NOT EXISTS memos (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
remark TEXT
)
''');
db.execute("INSERT INTO memos (title) VALUES ('idea')");
var rows = db.select('SELECT remark FROM memos WHERE id = 1');
if (rows.isNotEmpty) {
var text = rows.first['remark'];
if (text == null) {
print('missing');
} else {
print(text);
}
}
db.dispose();
Тот же столбец можно прочитать через оператор
??, если дальше нужна строка по умолчанию:
import 'package:sqlite3/sqlite3.dart';
var db = sqlite3.open('nulls.db');
db.execute(
'INSERT INTO memos (title, remark) VALUES (?, ?)',
['done', 'shipped'],
);
var rows = db.select(
'SELECT remark FROM memos WHERE title = ?',
['idea'],
);
if (rows.isNotEmpty) {
var remark = rows.first['remark'];
print(remark ?? 'none');
}
db.dispose();
Создайте таблицу items в stock.db
с обязательным sku и необязательным
comment, добавьте строку без комментария
и выведите "empty", если поле пустое.
Добавьте строку с комментарием "fragile"
и выведите текст для обеих записей через
оператор ??.