No suitable driver found for jdbc:mysql://localhost:3306

pessoal, tem um erro que parece ser simples…mas esta me atormentando…

de uma hora para outra…começou a ocorrer o seguinte erro na aplicacao que uso(jsp.mysql…hibernate)


Stacktrace:

Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /gerencia/forma_boleto.jsp at line 46

 
46:          Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gerencia", "venda", "123456");
47: 
48:             // Executa a busca.
49:             Statement stmt = conn.createStatement();

Os jars estao certinho…! uma hora fui “recompilar” o codigo todo(netbeans 6.7)…entao comecou dar esse erro. Nao alterei nenhum drive…

Alguem tem alguma ideia?

abraços

Não tenho idéia não… Você disse que estava funcionando o código e de repente parou…
Isso não é normal, a não ser que você mudou:

  1. A porta do bd (3306)
  2. O nome da tabela (gerencia)
  3. O usuário (venda)
  4. A senha (1234)

O erro que nos informou eh pouco. Envia pf a stack trace completa.

Bom dia a todos.

Pelo que eu conheço da URL do JDBC MySQL é esta:

  jdbc:mysql://localhost/MYDATABASE

Ou seja, não é necessário informar a porta, a menos é claro, que voce queira especificar uma porta para ele.

Outra coisa que eu percebo é que voce está fazendo conexão em uma página JSP (forma_boleto.jsp), e isto não é recomendável, o certo é que voce faça uma classe de conexão, faça as classes DAO responsável pelas instruções SQL, porque conexão com banco de dados e SQL em uma arquitetura MVC (Model, View e Control - Modelagem, Visualização e Controle), é justamente a parte do Controle que sempre deverá ser executada no servidor sem sair dele.

O que eu quero dizer é o que deve ser levado as páginas de visualização (JSP), são Objetos bean, que são classes com a estrutura de um registro de dados, onde estes dados foram apanhados no servidor atráves do controle, modelados no bean e enviados a visualização que são os JSP.

Repare que voce está tentando fazer uma conexão [color=blue]Localhost[/color], ai eu pergunto, o que acontece quando voce envia um JSP ao cliente, se o cliente não é localhost :?:

Apesar dos JSPs serem processados no servidor, e talvez seja isto o porque funcionava antes, porém esta é uma das razões que não se deve processar conexão de banco de dados na lógica de visualização (JSP).

alexmdo, aqui esta o resto do stack

...
..

javax.servlet.ServletException: An exception occurred processing JSP page /gera/forma_Boleto.jsp at line 276



Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /pedido/formapagto_boleto.jsp at line 46

43: 
44: 
45: 
46:          Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gerencia", "venda", "123456");
47: 
48:             // Executa a busca.
49:             Statement stmt = conn.createStatement();



Caused by: javax.servlet.ServletException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/gerencia
	at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
	at org.apache.jsp.pedido.formapagto_005fboleto_jsp._jspService(formapagto_005fboleto_jsp.java:180)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	... 74 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/gerencia
	at java.sql.DriverManager.getConnection(DriverManager.java:602)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at org.apache.jsp.pedido.formapagto_005fboleto_jsp._jspService(formapagto_005fboleto_jsp.java:109)
	... 77 more
..
..

Verifique se:
O driver está registrado corretamente;
O jar do driver do mysql esta no classpath;

Boa tarde a todos.

Adamastor.pa.

Observe o que o nosso amigo Furutani disse abaixo:

Isto porque o erro principal foi observado aqui:

  ....
  Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/gerencia 
  ....  

Como voce também está utilizando o Tomcat, acredito que se deva também colocar o Jar do JDBC do MySQL dentro da pasta “libs” que se encontra na pasta do Tomcat, isto porque é o Tomcat que gerencia esta conexão.

Quanto a questão abaixo:

Nada impede a voce utilizar a conexão nos JSPs, entretanto, acho também que nem como teste deve-se adotar esta postura como prática de ensinamento, a não ser adotá-la como exemplo de não usá-la, mostrando que a conexão feita em JSPs pode tornar o tempo de resposta muito lento, isto considerando que páginas de Web podem ser dado refresh com F5 e fazer redirect, onde a cada refresh, uma conexão tentará ser feita, e isto sobrecarrega o servidor.

Boa tarde a todos.

Adamastor.pa.

Observe o que o nosso amigo Furutani disse abaixo:

Isto porque o erro principal foi observado aqui:

  ....
  Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/gerencia 
  ....  

Como voce também está utilizando o Tomcat, acredito que se deva também colocar o Jar do JDBC do MySQL dentro da pasta “libs” que se encontra na pasta do Tomcat, isto porque é o Tomcat que gerencia esta conexão.

Quanto a questão abaixo:

Nada impede a voce utilizar a conexão nos JSPs, entretanto, acho também que nem como teste deve-se adotar esta postura como prática de ensinamento, a não ser adotá-la como exemplo de não usá-la, mostrando que a conexão feita em JSPs pode tornar o tempo de resposta muito lento, isto considerando que páginas de Web podem ser dado refresh com F5 e fazer redirect, onde a cada refresh, uma conexão tentará ser feita, e isto sobrecarrega o servidor.

furutani,

Verifiquei o classpath e a pasta no tomcat…o driver esta la(mysql-connector-java-5.1.6-bin)…

discorpio…

Acaho que vou tentar por isso num Bean…(alias ja tentei)…mas as variveis acusam que nao existe…por exemplo:

JSP…

<%
            String caminho = ResourceHelper.getProperty(null, "indica");
        
            %>

<%
..
...
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.util.Date" %>

  <%          Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gerencia", "venda", "123456");

           Statement stmt = conn.createStatement();

            ResultSet rs = stmt.executeQuery("Select  c.numero, c.codigo, c.id_cliente, c.nome  FROM cliente c ");

            rs.next();

            Double valor = new Double(rs.getDouble("total_com_frete"));
             Long nossoNum = new Long(rs.getLong("id"));
            String nome = rs.getString("nome");
            String ccodigo = rs.getString("codigo");
rs.close();
            stmt.close();
            conn.close();
        ..

Quando tentei montar um Bean…ele se perdeu nas variaveis…por exemplo…

package boletos;

import java.sql.*;
import javax.servlet.http.*;

public class DadosBoleto implements HttpSessionBindingListener{
	private Connection connection;
	private Statement statement;

	private static final String driver = "com.mysql.jdbc.Driver";
	
	private static final String dbURL = "jdbc:mysql://localhost/gerencia";
	private static final String login = "vendas";
	private static final String password = "123456";

    public DadosBoleto(){
    	try{
    		Class.forName(driver);
    		connection = DriverManager.getConnection(dbURL, login, password);
    		statement = connection.createStatement();
    	}
..
..
..

Da uma olhada ve senão é o mesmo problema.

[]'s

Opa, ta parecendo um algum bugzinho no Build Path… apague o jar e importe novamente em Build Path/Add External jar.

Para validar se o mesmo foi referenciado corretamente ao servidor de aplicação basta consultar dentro de Libraries (que deve estar dentro da estrutura do seu projeto) o jar importado.

Abs!

Acho que ele não está desde 2010 à espera da vossa ajuda…

Nossa nem tinha reparado que era de 2010 a msg. Faltou ele colocar a solução né.

[]'s