База данных: MySQL
При написании приложения для удобства отладки программы информация об исключении может отображаться в коде обработки исключений, чтобы код можно было отлаживать по подсказкам об ошибках. Код обработки исключений обычно можно написать так:
пытаться{
…
}catch(Исключение е){
System.out.println(e.toString());
}
Вот некоторые распространенные сообщения об ошибках:
(1) Сообщение об ошибке, появляющееся, когда драйвер не существует, выглядит следующим образом:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
Вторая половина — это имя драйвера, которое вы написали в программе.
Решение: Внимательно проверьте, правильно ли написано имя класса. Если имя класса написано некорректно, это означает, что сжатый пакет, в котором находится драйвер, не был внедрен в проект.
(2) Сообщение об ошибке, появляющееся при неправильном написании URL-адреса, выглядит следующим образом:
java.sql.SQLException: нет подходящего драйвера
Решение: внимательно проверьте правильность формата URL-адреса. Форматы URL-адресов в разных базах данных различаются.
(3) Сообщение об ошибке, появляющееся в случае неправильного IP-адреса хоста или недоступности сети, выглядит следующим образом:
com.mysql.jdbc.CommunicationsException: сбой канала связи из-за основного исключения:
** НАЧАЛО ВЛОЖЕННОГО ИСКЛЮЧЕНИЯ **
java.net.ConnectException
СООБЩЕНИЕ: Время соединения истекло: подключитесь
ТРЕЙС СТЕКА:
java.net.ConnectException: время ожидания соединения истекло: подключиться
в java.net.PlainSocketImpl.socketConnect (собственный метод)
в java.net.PlainSocketImpl.doConnect (неизвестный источник)
в java.net.PlainSocketImpl.connectToAddress (неизвестный источник)
в java.net.PlainSocketImpl.connect (неизвестный источник)
на java.net.SocksSocketImpl.connect (неизвестный источник)
в java.net.Socket.connect (неизвестный источник)
в java.net.Socket.connect (неизвестный источник)
в java.net.Socket.<init>(неизвестный источник)
в java.net.Socket.<init>(неизвестный источник)
в com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
в com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
в com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
в com.mysql.jdbc.Connection.<init>(Connection.java:393)
на com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
в java.sql.DriverManager.getConnection (неизвестный источник)
в java.sql.DriverManager.getConnection (неизвестный источник)
в test.JDBCTest.oracleTest(JDBCTest.java:25)
в test.JDBCTest.main(JDBCTest.java:12)
** КОНЕЦ ВЛОЖЕННОГО ИСКЛЮЧЕНИЯ **
Решение: проверьте правильность IP-адреса и наличие проблем с сетью.
(4) Сообщение об ошибке, если порт неправильный или сервер базы данных не запущен, выглядит следующим образом:
com.mysql.jdbc.CommunicationsException: сбой канала связи из-за основного исключения:
** НАЧАЛО ВЛОЖЕННОГО ИСКЛЮЧЕНИЯ **
java.net.ConnectException
СООБЩЕНИЕ: Соединение отклонено: подключитесь
ТРЕЙС СТЕКА:
java.net.ConnectException: соединение отклонено: подключиться
в java.net.PlainSocketImpl.socketConnect (собственный метод)
в java.net.PlainSocketImpl.doConnect (неизвестный источник)
в java.net.PlainSocketImpl.connectToAddress (неизвестный источник)
в java.net.PlainSocketImpl.connect (неизвестный источник)
на java.net.SocksSocketImpl.connect (неизвестный источник)
в java.net.Socket.connect (неизвестный источник)
в java.net.Socket.connect (неизвестный источник)
в java.net.Socket.<init>(неизвестный источник)
в java.net.Socket.<init>(неизвестный источник)
в com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
в com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
в com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
в com.mysql.jdbc.Connection.<init>(Connection.java:393)
в com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
в java.sql.DriverManager.getConnection (неизвестный источник)
в java.sql.DriverManager.getConnection (неизвестный источник)
в test.JDBCTest.oracleTest(JDBCTest.java:25)
в test.JDBCTest.main(JDBCTest.java:12)
** КОНЕЦ ВЛОЖЕННОГО ИСКЛЮЧЕНИЯ **
Решение: Проверьте правильность порта и запуск сервера базы данных.
(5) Сообщение об ошибке, появляющееся при неправильном имени базы данных, выглядит следующим образом:
java.sql.SQLException: неизвестная база данных «test2»
Решение: Проверьте, существует ли база данных.
(6) Сообщение об ошибке, появляющееся в случае неправильного имени пользователя или пароля, выглядит следующим образом:
java.sql.SQLException: доступ запрещен для пользователя 'roo'@'localhost' (с использованием пароля: ДА)
Решение: Убедитесь, что имя пользователя и пароль верны.
(7) Сообщение об ошибке, вызванное ошибкой имени таблицы, выглядит следующим образом:
java.sql.SQLException: таблица «test.student1» не существует
Решение: Проверьте, существует ли таблица и указано ли неверное имя таблицы.
(8) Сообщение об ошибке, вызванное ошибкой имени столбца, выглядит следующим образом:
java.sql.SQLException: неизвестный столбец «sid» в «списке полей»
Решение. Внимательно посмотрите на имена столбцов в таблице базы данных.
(9) При обработке набора результатов порядковый номер столбца, который необходимо получить, больше количества столбцов или меньше 0.
Сообщение об ошибке выглядит следующим образом:
java.sql.SQLException: индекс столбца выходит за пределы диапазона, 4 > 3.
Причиной этой ошибки является то, что в таблице базы данных есть только 3 столбца, а при получении информации используется rs.getString(4). Эту ошибку легко допустить, особенно при использовании обработки цикла.
(10) Если при выполнении оператора вставки количество столбцов в таблице отличается от количества столбцов в операторе вставки, отображается следующее сообщение об ошибке:
java.sql.SQLException: количество столбцов не соответствует количеству значений в строке 1
Предыстория этой ошибки такова: в таблице базы данных есть 3 столбца, и при вставке было задано 4 значения. Оператор SQL выглядит следующим образом:
вставить в значения ученика('0011323','Li Xu',22,99).
(11) При выполнении оператора вставки первичный ключ повторяется.
Сообщение об ошибке выглядит следующим образом:
java.sql.SQLException: повторяющаяся запись «0011323» для ключа 1
Причина этой ошибки такова: оператор SQL был выполнен дважды подряд, и ошибка произошла во второй раз.
(12) При выполнении оператора вставки сообщение об ошибке, если значение слишком длинное, выглядит следующим образом:
java.sql.SQLException: слишком длинные данные для столбца «id» в строке 1
Решение: проверьте длину столбца в базе данных.