Чтобы определить ошибку доступа к базе данных, которая вызвала ваше предложение catch, попробуйте следующий код:
catch (SqlException e) {
System.out.println("database exception");
System.out.println(e);
e.printStackTrace();
}
catch (Exception e)
System.out.println("unexpected exception");
System.out.println(e);
e.printStackTrace();
throw;
}
Вам нужен номер строки, сгенерировавший исключение, и printStackTrace()
покажет его вам.Или в отладчике Eclipse установите точку останова в обработчике исключений и проверьте исключение.
Ваш код показывает это:
PreparedStatement pstmt = null;
pstmt.close();
Вторая из этих строк генерирует исключение, поскольку вы не можетевызовите метод без объекта.
Совет Pro : во многих сценариях в реальном мире невозможность завершить соединение сильно отличается от неспособности завершить запрос INSERT
или какой-либо другойзапрос.Проблемы с подключением обычно означают, что сервер базы данных выключен или ваша сеть работает неправильно.Проблемы с запросами часто означают, что у вас есть какая-то проблема в логике вашей программы или базы данных.Возможно, вы решите использовать два блока try / catch, один для соединения, а другой для запроса.
Pro tip : всегда делать отступы в своем коде, чтобы правильно отображать вложение.Eclipse (и большинство IDE) сделает это за вас.