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

Caros, preciso de uma ajuda. O código JDBC está rodando pelo “Java aplication” e funciona tudo bem (conectar ao banco, traz a lista no console…etc). Mas, quando passei para a fase do Tomcat me veio o erro abaixo:

Type Exception Report

Message java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/bancojdbc

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/bancojdbc br.com.bruno.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:12) br.com.bruno.jdbc.ContatoDao.(ContatoDao.java:20) br.com.bruno.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:53) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/bancojdbc java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702) java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) br.com.bruno.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:10) br.com.bruno.jdbc.ContatoDao.(ContatoDao.java:20) br.com.bruno.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:53) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.

o que pode ser?

package br.com.bruno.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public Connection getConnection() throws ClassNotFoundException {
		 try {
			return DriverManager.getConnection("jdbc:mysql://localhost/bancojdbc", "root", "bruno");
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}



package br.com.bruno.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.management.RuntimeErrorException;


import java.sql.Date;

public class ContatoDao {
	private Connection connection;

	public ContatoDao() throws ClassNotFoundException {
		this.connection = new ConnectionFactory().getConnection();
	}

	public void adciona(Contato contato) {
		String sql = "insert into contatos " + "(nome,email,endereco,dataNascimento)" + " values (?,?,?,?)";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public List<Contato> getLista() {
		try {
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.connection.prepareStatement("select * from contatos");
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				Contato contato = new Contato();
				contato.setId(rs.getLong("id"));
				contato.setNome(rs.getNString("nome"));
				contato.setEmail("email");
				contato.setEndereco("endereco");

				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("dataNascimento"));
				contato.setDataNascimento(data);

				contatos.add(contato);

			}
			rs.close();
			stmt.close();
			return contatos;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public void altera(Contato contato) {
		String sql = "update contatos set nome=?, email=?, " + "endereco=?, dataNascimento=? where id=?";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
			stmt.setLong(5, contato.getId());
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public void remove(Contato contato) {
		try {
			String sql = "delete from contatos where id=?";
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setLong(1, contato.getId());
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

package br.com.bruno.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import br.com.bruno.jdbc.Contato;
import br.com.bruno.jdbc.ContatoDao;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		PrintWriter writer = response.getWriter();

		PrintWriter out = response.getWriter();

		// buscando os parâmetros no request
		String nome = request.getParameter("nome");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
		String dataEmTexto = request.getParameter("dataNascimento");
		Calendar dataNascimento = null;

		// fazendo a conversão da data
		try {
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		} catch (java.text.ParseException e) {
			writer.println("Erro de conversão de data");
			return; // parar a execução do método
		}

		// monta um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);
		contato.setDataNascimento(dataNascimento);

		// salva o contato
		ContatoDao dao;
		try {
			dao = new ContatoDao();
			dao.adciona(contato);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// imprime o nome do contato que foi adicionado
		writer.println("<html>");
		writer.println("<body>");
		writer.println("Contato " + contato.getNome() + " adicionado com sucesso");
		writer.println("</body>");
		writer.println("</html>");
	}

}

O driver do MySQL está como dependência no arquivo final?

Como assim?

Adicione o mysql connector à pasta /lib do tomcat.

https://dev.mysql.com/downloads/connector/j/

1 curtida

Nossa deu certo. Valeu