Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpDbEr 141 of 224 menu
◀ ▶

Ошибка SQL-запроса в Dart

Синтаксическая ошибка или обращение к несуществующей таблице приводят к исключению. Пакет sqlite3 не проверяет SQL заранее, поэтому сбой виден только при выполнении.

Неверное имя таблицы в SELECT оборачивают в try и обрабатывают отдельно от успешного пути:

import 'package:sqlite3/sqlite3.dart'; var db = sqlite3.open('bad_sql.db'); try { db.select('SELECT id FROM missing_table'); } on SqliteException catch (ex) { print(ex.message); } db.dispose();

Опечатка в ключевом слове тоже дает исключение. Сообщение можно залогировать, не прерывая весь процесс:

import 'package:sqlite3/sqlite3.dart'; var db = sqlite3.open('bad_sql.db'); db.execute(''' CREATE TABLE IF NOT EXISTS probes ( id INTEGER PRIMARY KEY ) '''); try { db.execute('INSER INTO probes DEFAULT VALUES'); } on SqliteException catch (ex) { print('failed'); print(ex.message); } db.dispose();

Откройте safe.db и выполните выборку из ghost_rows в try. При ошибке выведите "no table".

Создайте таблицу samples и намеренно отправьте запрос с опечаткой в UPDATE. Выведите текст сообщения исключения.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить