Erro: No suitable driver found for jdbc.mysql://localhost:3306/cadastro

Bom dia, boa tarde ou boa noite.
Comecei um projeto pessoal para desenvolver um sistema.
Como sou iniciante, me deparei com uns erros, alguns consegui resolver outros ainda não.
E por isso, venho através deste post pedir uma ajuda do conhecimento de pessoas mais avançadas que possam me ensinar um caminho para alcançar a solução desses problemas.

Segue erro:

java.sql.SQLException: No suitable driver found for jdbc.mysql://localhost:3306/cadastro
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
	at CrudTransportadoraJava/br.com.cadastro.factory.ConnectionFactory.createConnectionToMySQL(ConnectionFactory.java:22)
	at CrudTransportadoraJava/br.com.cadastro.dao.CadastroDAO.save(CadastroDAO.java:21)
	at CrudTransportadoraJava/br.com.cadastro.aplicaçao.Main.main(Main.java:24)

Desde já, agradeço o contato, e estou disponível para quaisquer esclarecimentos.

Você precisa adicionar o driver do MySQL como dependência.

2 curtidas

Depois que baixar o driver, você vai em Project -> Properties -> Java Build Path -> Libraries -> Add JARs…

1 curtida

Acabei de perceber uma coisa:
Vc usou um ponto pra separar jdbc e mysql na URL?

Teria que ser dois pontos:

"jdbc:mysql://localhost:3306/cadastro"
2 curtidas

Foi, eu li que o não teria um driver que fosse compatível com o caminho para conexão com o banco de dados. Mas pesquisando não consegui encontrar um driver que fosse efetivo, encontrei os connectors, de várias versões do mySQL.

Certo, onde eu posso baixar o driver específico? No site da Oracle?

Certo, irei corrigir isso no código fonte e já te retorno! Obrigado.

Se for MySQL, eu passei o link acima. Clica nele, escolha Plataform Independent e baixe o zip, dentro vai ter o jar da dependência.

1 curtida

Obrigado amigo. Consegui solucionar mas apareceu um erro dizendo que desconhece o banco de dados cadastro. Acredito que meu banco de dados foi apagado por algum erro meu, por isso ele é desconhecido. Agradeço, desde já o contato!

1 curtida

Se tiver mais dúvidas só criar um novo tópico :slight_smile:

1 curtida

Eu coloquei tudo certinho, porém tinha dado um erro dizendo Unknow Database “cadastro”;
No caso ele me informou que não existe um banco de dados chamado cadastro. Então, criei meu banco de dados no workbench, mas agora dá esse novo erro no código:

Lembrando que essa é a primeira etapa do crud com java que estou desenvolvendo neste sistema solo.

Então, se tu puder me ajudar a pensar junto agradeceria!

Segue o erro:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1373)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1386)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.setString(ClientPreparedStatement.java:1753)
at CrudTransportadoraJava/br.com.cadastro.dao.CadastroDAO.save(CadastroDAO.java:26)
at CrudTransportadoraJava/br.com.cadastro.aplicaçao.Main.main(Main.java:24)

Pelo que entendi seria uma diferença nos valores dos parâmetros, mas não consigo localizar no meu código fonte onde poderia alterar este erro.

Mostra o código da classe CadastroDAO.

Certo, segue o código fonte da classe CadastroDAO:

package br.com.cadastro.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;

import br.com.cadastro.factory.ConnectionFactory;
import br.com.cadastro.model.Bancodedadosgwsistemas;

public class CadastroDAO {
public void save (Bancodedadosgwsistemas cadastro) {
String sql = “INSERT INTO cadastro (nome, empresa, telefone, modal, rua, numero, bairro, cidade, uf, dataCadastro) VALUES ()”;

	Connection conn = null;
	PreparedStatement pstm = null;
	
	try {
		// Criar uma conexão com o banco de dados
		conn = ConnectionFactory.createConnectionToMySQL(); 
		
		pstm = (PreparedStatement) conn.prepareStatement(sql);
		
		// Adicionando os valores que são esperandos pela Query
		pstm.setString(1, cadastro.getNome());
		pstm.setString(2, cadastro.getEmpresa());
		pstm.setString(3, cadastro.getTelefone());
		pstm.setString(4, cadastro.getModal());
		pstm.setString(5, cadastro.getRua());
		pstm.setString(6, cadastro.getNumero());
		pstm.setString(7, cadastro.getBairro());
		pstm.setString(8, cadastro.getCidade());
		pstm.setString(9, cadastro.getUf());
		pstm.setDate(10, new Date(cadastro.getDataCadastro().getTime()));
		
		//Executar a Query
		pstm.execute();
		
		System.out.println ("Contato salvo com sucesso!");
	} catch (Exception e){
		e.printStackTrace();
	} finally {
		
		// Fechar as conexões
		try {
			if (pstm != null) {
				pstm.close();
			}
			
			if (conn != null) {
				conn.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

}

Tá faltando os placeholders (interrogações) aqui.
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Para cada chamada ao um método set de PreparedStatement, precisa ter um placeholder (?) correspondente.

Certo entendi, vou tentar aqui!

Fiz as alterações, e apareceu este novo erro:

java.sql.SQLException: Parameter index out of range (0 < 1 ).
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1370)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1386)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.setLong(ClientPreparedStatement.java:1581)
at CrudTransportadoraJava/br.com.cadastro.dao.CadastroDAO.save(CadastroDAO.java:26)
at CrudTransportadoraJava/br.com.cadastro.aplicaçao.Main.main(Main.java:24)

Você usou 0 em algum índice? No PreparedStatement o índice começa do 1.