SQLException: No se ha encontrado un controlador adecuado

Tengo una clase de Java que accede a una base de datos MySQL a través de JDBC que uso en un JSP que se ejecuta en Tomcat, y recibo la excepción No Driver Found.

Tengo un método:

private static Statement makeStatement() { try{ com.mysql.jdbc.Driver d = null; try{d = new com.mysql.jdbc.Driver();}catch(Exception e){ System.out.println("ERROR BY NEW DRIVER " + e.toString() + "\n");e.printStackTrace();} Connection con = DriverManager.getConnection(url, user, password); return con.createStatement(); }catch(java.sql.SQLException ex){ System.out.println("ERROR IN makeStatement " + "\nERROR - " + ex.toString() + "\n ERROR CODE:\n " + ex.getErrorCode() + "\nSQLSTATE:\n " + ex.getSQLStat e());ex.printStackTrace();} return null; } 

Eso arroja un error en Connection con = DriverManager.getConnection(url, user, password); Aquí está mi impresión de catalina.out:

  Received Parameters ERROR IN makeStatement ERROR - java.sql.SQLException: No suitable driver found for ERROR CODE: 0 SQLSTATE: 08001 java.sql.SQLException: No suitable driver found for at java.sql.DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at message.Message.makeStatement(Message.java:72) at message.Message.query(Message.java:79) at message.Message.getName(Message.java:225) at org.apache.jsp.message_jsp._jspService(message_jsp.java:288) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:548) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) ERROR IN QUERY java.lang.NullPointerException ERROR in getName java.lang.NullPointerException ----------------------------------- Received Parameters newMessage = newpassword = verifypassword = sendinfo = username = Eli newusername = login = login password = tree ERROR IN makeStatement ERROR - java.sql.SQLException: No suitable driver found for ERROR CODE: 0 SQLSTATE: 08001 java.sql.SQLException: No suitable driver found for at java.sql.DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at message.Message.makeStatement(Message.java:72) at message.Message.query(Message.java:79) at message.Message.validUser(Message.java:195) at org.apache.jsp.message_jsp._jspService(message_jsp.java:123) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:548) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) ERROR IN QUERY java.lang.NullPointerException ERROR in validUser java.lang.NullPointerException ERROR IN makeStatement ERROR - java.sql.SQLException: No suitable driver found for ERROR CODE: 0 SQLSTATE: 08001 java.sql.SQLException: No suitable driver found for at java.sql.DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at message.Message.makeStatement(Message.java:72) at message.Message.query(Message.java:79) at message.Message.getName(Message.java:225) at org.apache.jsp.message_jsp._jspService(message_jsp.java:288) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:548) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) ERROR IN QUERY java.lang.NullPointerException ERROR in getName java.lang.NullPointerException 

El único error que importa es el de makeStatement() ya que esa falla causa todos los otros errores. He comprobado cuádruple que tengo los archivos jar correctos en mi directorio WEB-INF / lib y reinicié Tomcat más veces de las que quisiera. Tengo una aplicación web separada que usa makeStatement() en un archivo .java diferente, y que webapp funciona bien. Aún más raro es que tengo esto en el .java:

 static { System.err.println("\n\nTEST MYSQL ACCESS: dump all relevant tables:"); dump(); System.err.println("END OF MYSQL ACCESS ACCESS."); } public static void dump() { try { readUsers(); for (UserRecord u: users) System.err.println(u.username+" "+u.password); } catch (Exception e) {System.err.println(e);} } 

donde readUsers() lee todos los usuarios de la base de datos usando makeStatement() . Esto realmente funciona y todos los usuarios de la base de datos están impresos (no se muestran aquí por razones obvias :)) y luego aparece el error de “driver no encontrado”.

java.sql.SQLException: no se encontró un controlador adecuado

Esta excepción puede tener 2 causas:

  1. El controlador JDBC no está cargado en absoluto.
  2. La URL no coincide con ninguno de los controladores JDBC cargados.

Dado que el controlador parece estar cargado (aunque de manera incorrecta), parece que la URL es completamente incorrecta. Asegúrese de que el valor de su variable url coincida con el siguiente formato

 jdbc:mysql://localhost:3306/dbname 

Ver también:

  • Conecte Java a una base de datos MySQL

No relacionado con el problema concreto: el código de Java no pertenece a un archivo JSP. Trabaja en eso también. Su manejo de excepciones también es terrible, debe lanzar la excepción (para que bloquee la ejecución del remanente del código) en lugar de imprimir el mensaje / rastreo y luego continuar con el código.

¿Registraste tu clase con el Driver? Por ejemplo:

 Class.forName("net.sourceforge.jtds.jdbc.Driver"); DriverManager.getConnection(url,user,password); 

Tuve que eliminar mysql-connector-java – *. Jar de WEB-INF / lib y agregarlo a la carpeta tomcat6 / lib. (Tomcat6 es donde se instaló Tomcat.) No sé por qué funcionó, pero funcionó para mí.

¿Estás pasando una cadena de url emtpy a getConnection ()? El mensaje de error comienza

 No suitable driver found for ERROR 

No se encontró un controlador adecuado para [blanco]? Parece que no estás pasando una url aquí.

Vaya a la carpeta de la biblioteca de su proyecto y haga clic derecho, luego vaya a la opción ‘Agregar biblioteca’. Ahora agregue el controlador mysql.jdbc.Driver