Base de datos: MySQL
Al escribir una aplicación, para facilitar la depuración del programa, la información de la excepción se puede mostrar en el código de manejo de excepciones, de modo que el código se pueda depurar de acuerdo con las indicaciones de error. El código de manejo de excepciones generalmente se puede escribir así:
intentar{
…
}catch(Excepción e){
System.out.println(e.toString());
}
A continuación se muestran algunos mensajes de error comunes:
(1) El mensaje de error que aparece cuando el controlador no existe es el siguiente:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
La segunda mitad es el nombre del conductor que escribiste en el programa.
Solución: verifique cuidadosamente si el nombre de la clase está escrito incorrectamente. Si el nombre de la clase no está escrito incorrectamente, significa que el paquete comprimido donde se encuentra el controlador no se ha introducido en el proyecto.
(2) El mensaje de error que aparece cuando la URL se escribe incorrectamente es el siguiente:
java.sql.SQLException: no hay un controlador adecuado
Solución: compruebe cuidadosamente si el formato de la URL es correcto. Los formatos de URL de diferentes bases de datos son diferentes.
(3) El mensaje de error que aparece cuando la dirección IP del host es incorrecta o la red no está disponible es el siguiente:
com.mysql.jdbc.CommunicationsException: falla en el enlace de comunicaciones debido a una excepción subyacente:
** COMENZAR EXCEPCIÓN ANIDADA **
java.net.ConnectException
MENSAJE: Se agotó el tiempo de conexión: conectar
SEGUIMIENTO DE PILA:
java.net.ConnectException: Se agotó el tiempo de espera de la conexión: conectar
en java.net.PlainSocketImpl.socketConnect (método nativo)
en java.net.PlainSocketImpl.doConnect (fuente desconocida)
en java.net.PlainSocketImpl.connectToAddress (fuente desconocida)
en java.net.PlainSocketImpl.connect (fuente desconocida)
en java.net.SocksSocketImpl.connect (fuente desconocida)
en java.net.Socket.connect (fuente desconocida)
en java.net.Socket.connect (fuente desconocida)
en java.net.Socket.<init>(Fuente desconocida)
en java.net.Socket.<init>(Fuente desconocida)
en com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
en com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
en com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
en com.mysql.jdbc.Connection.<init>(Connection.java:393)
en com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
en java.sql.DriverManager.getConnection (fuente desconocida)
en java.sql.DriverManager.getConnection (fuente desconocida)
en test.JDBCTest.oracleTest(JDBCTest.java:25)
en test.JDBCTest.main(JDBCTest.java:12)
** FINALIZAR EXCEPCIÓN ANIDADA **
Solución: compruebe si la dirección IP es correcta y si hay algún problema con la red.
(4) El mensaje de error si el puerto es incorrecto o el servidor de la base de datos no se inicia es el siguiente:
com.mysql.jdbc.CommunicationsException: falla en el enlace de comunicaciones debido a una excepción subyacente:
** COMENZAR EXCEPCIÓN ANIDADA **
java.net.ConnectException
MENSAJE: Conexión rechazada: conectar
SEGUIMIENTO DE PILA:
java.net.ConnectException: Conexión rechazada: conectar
en java.net.PlainSocketImpl.socketConnect (método nativo)
en java.net.PlainSocketImpl.doConnect (fuente desconocida)
en java.net.PlainSocketImpl.connectToAddress (fuente desconocida)
en java.net.PlainSocketImpl.connect (Fuente desconocida)
en java.net.SocksSocketImpl.connect (Fuente desconocida)
en java.net.Socket.connect (fuente desconocida)
en java.net.Socket.connect (fuente desconocida)
en java.net.Socket.<init>(Fuente desconocida)
en java.net.Socket.<init>(Fuente desconocida)
en com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
en com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
en com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
en com.mysql.jdbc.Connection.<init>(Connection.java:393)
en com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
en java.sql.DriverManager.getConnection (fuente desconocida)
en java.sql.DriverManager.getConnection (fuente desconocida)
en test.JDBCTest.oracleTest(JDBCTest.java:25)
en test.JDBCTest.main(JDBCTest.java:12)
** FINALIZAR EXCEPCIÓN ANIDADA **
Solución: compruebe si el puerto es correcto y si el servidor de la base de datos está iniciado.
(5) El mensaje de error que aparece cuando el nombre de la base de datos es incorrecto es el siguiente:
java.sql.SQLException: base de datos desconocida 'test2'
Solución: compruebe si la base de datos existe.
(6) El mensaje de error que aparece cuando el nombre de usuario o la contraseña son incorrectos es el siguiente:
java.sql.SQLException: Acceso denegado para el usuario 'roo'@'localhost' (usando contraseña: SÍ)
Solución: Confirme que el nombre de usuario y la contraseña sean correctos.
(7) El mensaje de error generado por el error del nombre de la tabla es el siguiente:
java.sql.SQLException: la tabla 'test.student1' no existe
Solución: compruebe si la tabla existe y si el nombre de la tabla está escrito incorrectamente.
(8) El mensaje de error generado por el error del nombre de la columna es el siguiente:
java.sql.SQLException: columna desconocida 'sid' en la 'lista de campos'
Solución: observe más de cerca los nombres de las columnas en la tabla de la base de datos.
(9) Al procesar el conjunto de resultados, el número de secuencia de la columna a obtener es mayor que el número de columnas o menor que 0
El mensaje de error que aparece es el siguiente:
java.sql.SQLException: índice de columna fuera de rango, 4> 3.
El trasfondo de este error es que solo hay 3 columnas en la tabla de la base de datos y se usa rs.getString(4) al recuperar información. Este error es fácil de cometer, especialmente cuando se usa el procesamiento de bucle.
(10) Al ejecutar la instrucción de inserción, si el número de columnas de la tabla es diferente al de la instrucción de inserción, el mensaje de error que aparece es el siguiente:
java.sql.SQLException: el recuento de columnas no coincide con el recuento de valores en la fila 1
El trasfondo de este error es: hay 3 columnas en la tabla de la base de datos y se dieron 4 valores al insertar La declaración SQL es la siguiente:
insertar en los valores del estudiante ('0011323', 'Li Xu', 22,99).
(11) Al ejecutar la instrucción de inserción, se repite la clave principal.
El mensaje de error que aparece es el siguiente:
java.sql.SQLException: entrada duplicada '0011323' para la clave 1
El trasfondo de este error es: se ejecutó una instrucción SQL dos veces consecutivas y se produjo un error la segunda vez.
(12) Al ejecutar la instrucción de inserción, el mensaje de error si el valor es demasiado largo es el siguiente:
java.sql.SQLException: datos demasiado largos para la columna 'id' en la fila 1
Solución, verifique la longitud de la columna en la base de datos.