За последние несколько дней некоторые пользователи столкнулись с предполагаемой ошибкой в списке кодов ошибок java.sql.sqlexception. Эта проблема может возникнуть по нескольким причинам. Давайте посмотрим на них сейчас.
Одобрено: Fortect
- Знакомство с SQLException
- Получить исключения
- Получать оповещения.
- Категоризированные исключения SQL
- Другие подклассы SQLException
Знакомство с SQLException
Если JDBC обнаруживает серьезную ошибку при взаимодействии с источником данных, он снова выдаст SQLException
в качестве другого примера, а не исключение
. (Источником истории в этом контексте является база данных, к которой часто подключается элемент Connection
.) SQLException
Экземпляр обычно содержит информацию о ближайшем будущем, которая может помочь вам определить способствуют возникновению ошибки:
-
Описание общей ошибки. Получите объект
String
, содержащий это описание совета, вызвав программный инструментSQLException.getMessage
. -
Код SQLState. Эти коды и их коммуникационные значения были стандартизированы ISO / ANSI и Open Group (X / Open), несмотря на то, что некоторые ограничения были оставлены редакторам источников данных для окончательного определения себя. Этот объект
String
состоит из пяти буквенно-цифровых символов. Получите этот режим, вызвав методSQLException.getSQLState
. -
Ошибка законов. Это существенная ошибка, определяющая целочисленное значение, которое привело к сбору экземпляра
SQLException
человека. Его значение и значение остаются специфичными для реализации и, возможно, вполне могут быть допустимым кодом ошибки, возвращаемым всем базовым трейдером. Получите ошибку, вызвав всю схемуSQLException.getErrorCode
. -
Причина. Экземпляр
sqlexception
может иметь причинные пары, состоящие из него или нескольких объектовThrowable
, в результате которых создается наш собственный экземплярsqlexception
. Четверг Чтобы объединить эти причины, вызовите мой методSQLException.getCause
рекурсивно, чтобы найти совпадение дляноль
. -
Ссылка на сложные исключения. Если возникает более непохожая на одну ошибку, на самом деле это исключения, к которым относится эта строка. Получает исключения, разбросанные вызванным методом
SQLException.getNextException
.
Получение исключений
Следующий метод JDBTCutorialUtilities, .printSQLException
возвращает SQLState, код ошибки, описание ошибки и причину (если есть), по которым эксперты состояние содержится в sqlexception
, а любые другие исключения могут быть объединены в:
Например, если вы обращаетесь к курсу CoffeesTable.dropTable
с Java DB в качестве вашей СУБД, компьютер COFFEES
не существует, в дополнение к удалению основного JDBTCutorialUtilities.ignoreSQLException
вывод будет примерно таким:
Вместо того, чтобы печатать и публиковать информацию SQLException
, вы можете сначала взять SQLState
, а затем при необходимости обработать некоторые из SQLException
. Для иллюстрации стратегии JDBTCutorialUtilities.ignoreSQLException
возвращаются с true
, если SQLState
, вероятно, является версией, сопоставимой с 42Y55
(а общественность использует Java DB в качестве вашей СУБД), что позволяет JDBTCutorialUtilities.printSQLException
игнорировать SQLException
:
Получать предупреждения
Объекты
SQLWarning
являются их подклассом SQLException
, который управляет отображением предупреждений базы данных. Предупреждения не останавливают выполнение самой важной задачи, в отличие от исключений; просто предупреждая участника, что что-то не запланировано. Например, для каждого предупреждения может быть указано, что вы знаете, что соглашение, которое вы использовали для отзыва, не было недавно отозвано.
A можно передать через объект Connection
, одна модель Statement
(включая PreparedStatement
и CallableStatement
) будет превращаются в объекты) или объект ResultSet
. У каждого из этих классов есть методы getWarnings
, которые покупатели должны вызвать, чтобы увидеть одно начальное предупреждение о вызывающей идее. Если getWarnings
возвращает предупреждение, вы можете легко SQLWarning
вызвать стиль getNextWarning
, чтобы решить проблему, чтобы получить дополнительные предупреждения. При выполнении функциональной инструкции автоматически принимаются предупреждения из предыдущей функциональной инструкции, поэтому они не появляются. Однако это означает, что большинство из вас должно быть предупреждено о сенсационной претензии, прежде чем клиенты смогут оформить другую претензию.
Следующие методы только в JDBTCutorialUtilities
показывают, как заполнить информацию с предупреждением, сообщаемую для Statement
ResultSet
объекты:
Наиболее частым предупреждением является просто полное предупреждение DataTruncation
для каждого подкласса SQLWarning
. Все объекты DataTruncation
имеют SQLState 01004
, указывающий, где возникла проблема с прослушиванием или записью содержимого. С помощью методов DataTruncation
большинство женщин и мужчин могут узнать, в каком порядке или альтернативном порядке данные параметра были усечены, если каждое усечение было представлено операцией чтения или отправки, какой метод должен был бы использоваться для передачи большого количества байтов и того, как на самом деле были переданы тонны байтов.
Категоризированные исключения SQL
Ваш драйвер JDBC может сгенерировать подкласс SQLException
, который соответствует нормальному состоянию SQLState, вполне возможно, общему состоянию ошибки, которое, по мнению экспертов, не когда-либо связанный со значением класса, специфичным для SQLState. Это предлагает более переносимый код обработки ошибок. Эти пропуски обычно являются подклассами одного из классов, которые скоро станут:
-
SQLNonTransientException
-
SQLTransientException
-
SQLRecoverableException
Одобрено: Fortect
Fortect — самый популярный и эффективный в мире инструмент для ремонта ПК. Миллионы людей доверяют ему обеспечение быстрой, бесперебойной и безошибочной работы своих систем. Благодаря простому пользовательскому интерфейсу и мощному механизму сканирования Fortect быстро находит и устраняет широкий спектр проблем Windows — от нестабильности системы и проблем с безопасностью до проблем с управлением памятью и производительностью.
а>
Для получения дополнительной информации об этих подклассах см. современную документацию Javadoc в файле java.sql
, в документации владельца JDBC.
Другие подклассы SQLException
-
BatchUpdateException
выдается, если во время пакетного обновления возникает критическая ошибка. В дополнение к руководству, предоставленному процессомSQLException
,BatchUpdateException
предоставляет номера обновлений, если принимаются во внимание какие-либо фразы, которые были выполнены до сегодняшней ошибки одного человека. -
SQLClientInfoException
генерируется, когда одно или несколько свойств ноу-хау клиента не могут быть установлены специально для романтических отношений. В дополнение к информации, предоставленной в соответствии сSQLException
,SQLClientInfoException
содержит каталог свойств информации о клиенте, которые, к сожалению, не обязательно были определены.
<для>Избегайте общедоступного статического printSQLException (SQLException ex) чек (разовый e: ex) если возможно (экземпляр SQLException) если уменьшить эффекты (ignoreSQLException ( ((ExceptionSQL) e). getSQLState ()) == ложь) e.printStackTrace (System.err); System.err.println (“SQLState: cm + ((SQLException) e) .getSQLState ()); System.err.println (код “ошибки”: + ((SQLException) e) .getErrorCode ()); System.err.println (“Сообщение: через + e.getMessage ()); Одноразово на = ex.getCause (); в то время как (t! = ноль) System.out.println (“Причина: +” t); r подразумевает t.getCause ();
<для>Состояние SQL: 42Y55Код ошибки: 30000Сообщение: ‘DROP TABLE’ нельзя практиковать”TESTDB.COFFEES” будет
Повысьте производительность вашего компьютера с помощью этой простой загрузки. г.