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

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

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

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

import java.sql.DriverManager import java.sql.SQLException fun main() { DriverManager.getConnection("jdbc:sqlite:bad_sql.db") .use { connection -> try { connection.createStatement().executeQuery( "SELECT id FROM missing_table" ) } catch (ex: SQLException) { println(ex.message) } } }

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

import java.sql.DriverManager import java.sql.SQLException fun main() { DriverManager.getConnection("jdbc:sqlite:bad_sql.db") .use { connection -> connection.createStatement().use { statement -> statement.execute( """ CREATE TABLE IF NOT EXISTS probes ( id INTEGER PRIMARY KEY ) """ ) } try { connection.createStatement().execute( "INSER INTO probes DEFAULT VALUES" ) } catch (ex: SQLException) { println("failed") println(ex.errorCode) } } }

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

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

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