2013-09-01 2 views
0

Почему мы должны бросать SQLException при создании соединения jdbc, в чем его цель? И что это за исключение? проверено, время выполнения, не отмечено?Бросок SQLException при создании соединения.

+0

Вы проверили javadoc? – Reimeus

+0

Я думаю, что это дубликат. Вы проверяете: http://stackoverflow.com/questions/18512600/java-sql-exception http://stackoverflow.com/questions/7074754/sql-login-exception-in-java http://stackoverflow.com/questions/13748811/java-jdbc-sql-exception –

ответ

1

SQLException происходит от исключения, но не RuntimeException, поэтому это check ed.

Исключение SQLException - одна из слабых точек JDBC, на мой взгляд. Это в основном означает «что-то пошло не так где-то» - это всего лишь один класс исключения для любого числа возможных причин, и вам нужно будет прочитать причину + трассировку стека, чтобы определить, что именно.

Просто некоторые возможные причины SQLException:

  • Не удалось подключиться к базе данных, поскольку URL неправильно
  • Не удалось подключиться к базе данных, поскольку база данных не слушает этот порт
  • Не удалось подключиться к базе данных, поскольку сервер базы данных не работает
  • Не удалось подключиться к базе данных, потому что имя пользователя/пароль не действительны
  • Ошибка синтаксиса в SQL-запросе
  • Row/таблицы в SQL заявления не существует
  • Вы забыли заполнить все параметры в подготовленном заявлении
  • индекс столбца из границ в ResultSet
  • Луна находится в неправильной фазе

Другими словами, одно исключение из-за множества причин. Хотя исключение SQL - это проверенное исключение (что означает, что в конечном итоге его нужно поймать, вы не можете его игнорировать), некоторые из возможных причин лучше обслуживать неконтролируемое исключение, поскольку они не могут возникнуть в результате действия пользователя или неправильной конфигурации , только как ошибка программиста. (например, забудьте указать значения для всех параметров или индекс столбца диапазона в ResultSet).

Вопрос в том, что касается открытия соединений, поэтому самые важные причины в моем (неполном) списке наиболее актуальны здесь. Проверяется SQLException, что является подходящим при открытии подключений, потому что доступность подключения к базе данных в конечном счете выходит за рамки управления программой Java, поэтому программа должна обрабатывать случаи, когда соединение невозможно открыть. Цель исключения в этом случае - позволить вам написать код, который будет обрабатывать эти ситуации.

0

От OracleDocs:

Каждый SQLException обеспечивает несколько видов информации:

  • строку, описывающую ошибку. Это используется как сообщение исключения Java, доступное с помощью метода getMesasge.
  • строка «SQLstate», которая следует за соглашениями XOPEN SQLstate или соглашениями SQL: 2003. Значения строки SQLState
    описаны в соответствующей спецификации. Метод databaseMetaData
    getSQLStateType может использоваться для определения того, возвращает ли драйвер
    тип XOPEN или тип SQL: 2003.
  • целочисленный код ошибки, характерный для каждого поставщика. Обычно это будет фактический код ошибки, возвращаемый базовой базой данных .
  • цепь к следующему исключению. Это можно использовать для предоставления дополнительной информации об ошибке.
  • причинно-следственная связь, если таковая имеется для этого SQLException.

Более подробную информацию можно найти здесь http://docs.oracle.com/javase/7/docs/api/java/sql/SQLException.html
и здесь: http://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.html


пожалуйста, в следующий раз сделать исследование, прежде чем публиковать такой вопрос, это не займет много усилий, чтобы введите то, что вы хотите в «GoogLe»

+0

Хотя я признаю, что вы ответили на этот вопрос, я не согласен с советом «google it», который иногда дается. Google сканирует этот вопрос и отвечает, и эта страница будет отображаться в результатах поиска Google. Я много раз искал что-то и нашел бесчисленные хиты вопросов, похожих на мои, и не сказал ничего, кроме «google it». Не полезно. – NickJ

+0

@NickJ хорошо все зависит от человека, действительно, я предпочитаю делать свое исследование, прежде чем задавать вопрос. Но его всегда стоит искать в сети, прежде чем спрашивать, поскольку он создает меньше мусора, и это дает лучшее понимание проблемы и возможных решений для нее. –

+0

В режиме онлайн не создается больше нежелательной информации. Ленивые ответы, такие как «Google it», загрязняют результаты поиска и делают исследования сложнее. Правильные ответы добавят полезные результаты поиска, что облегчит поиск в будущем. Понятно, что вас раздражают те, кто не прилагает усилий (или тех, кто просто не нашел точных поисковых запросов, которые им нужны), но если люди не хотят давать правильный ответ, они не должны ничего говорить. Никакой критики о вас - вы правильно ответили. – NickJ

Смежные вопросы