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

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

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

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

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:bad_sql.db")) { try { connection.createStatement().executeQuery( "SELECT id FROM missing_table" ); } catch (SQLException ex) { System.out.println(ex.message); } } } } }

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

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:bad_sql.db")) { try (Statement statement = connection.createStatement()) { statement.execute(""" CREATE TABLE IF NOT EXISTS probes ( id INTEGER PRIMARY KEY ) """); } try { connection.createStatement().execute( "INSER INTO probes DEFAULT VALUES" ); } catch (SQLException ex) { System.out.println("failed"); System.out.println(ex.errorCode); } } } } }

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

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

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