Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
12
respostas

Problema ao connectar ao banco.

Estou tentando conectar o banco e está dando esse erro: "java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/cartorio"

segue o códgo que estou usado.

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
            try {
                Connection c = new Conection().getCon();
                nascimentoDAO nDao = new nascimentoDAO();
                ResultSet rs = nDao.selecionaTudo(c);



                req.setAttribute("nascimentos", "123");
                 RequestDispatcher dispatcher = req
                            .getRequestDispatcher("/listagem.jsp");
                    dispatcher.forward(req, resp);



            } catch (Exception e) {
                // TODO: handle exception
            }

        }

quando eu estava usando em uma classe de teste com o metodo main estava rodando normalmente.

12 respostas

Olá Thiago,

Você precisa adicionar o jar do driver do MySQL no ClassPath do seu servidor.

Se mesmo adicionando não funcionar, avisa aqui para gente qual é o servidor que você está usando e como fez para adicionar o jar, ok?

Abraço!

O jar do mysql já está presente, se eu testo a conexão e um select simples funciona, problema é, quando tento fazer isso dentro do doGet, de um HttpServlet.

Mas o teste com um select simples foi feito em uma classe com o método main, não?

Se possível, informe por favor qual o servidor que está usando e onde o jar está adicionado.

Ah... Outra coisa. Verifique, por favor, se o driver está sendo carregado/registrado lá na sua classe "Conection", que pelo o que entendi é a "factory" de conexões com o banco.

Class.forName("com.mysql.jdbc.Driver");

Continua o mesmo erro, a classe conection é o factory sim, segue ele.

public class Conection {



    public Connection getCon() throws SQLException {

            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection c = DriverManager.getConnection("jdbc:mysql://localhost/cartorio", "root", "");

                return c;
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println(e);
                return null;
            }



            } 
}

Bom, Qual o servidor e onde foi adicionado o jar do mysql, por favor?

Estou usando o wamp e o jar está na pasta "referenced libraries"

Confesso que nunca trabalhei com esse servidor, mas faz dois testes então, por favor. 1º) Experimente colocar o jar do mysql na pasta lib do seu projeto web 2º) Experimente colocar a porta na URL de conexão com o MySQL, ficando assim (assumindo que 3306 é a porta do seu banco de dados):

DriverManager.getConnection("jdbc:mysql://localhost:3306/cartorio", "root", "");

Diga depois se funcionou, por favor.

Esta funcionando, porem não consigo enviar para a view o result set.

Connection c = new Conection().getCon();
                nascimentoDAO nDao = new nascimentoDAO();
                ResultSet rs = nDao.selecionaTudo(c);


                req.setAttribute("nascimentos",rs );
                 RequestDispatcher dispatcher = req
                            .getRequestDispatcher("/listagem.jsp");
                    dispatcher.forward(req, resp);

Como está o código da jsp, Thiago?

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>

</head>

<body>
<h1>test</h1>
<ul>
<c:forEach var="n" items="${nascimentos }"> 
</c:forEach>
    <li>${n.nome}</li>
</ul>

</body>
</html>
solução!

Boa noite Tiago,

Não seria

<c:forEach var="n" items="${nascimentos }"><li>${n.nome}</li></c:forEach>

Ou seja, a exibição dos nomes dentro do laço de para cada registro?

Abraços, Renan Souza