[RESOLVIDO] Erro na conexão - Java - MySQL

14 respostas Resolvido
javamysql
Guirockmartins

Olá pessoal
Não tenho muita experiência em programação, menos ainda em bacos de dados, e fazendo um projeto acabou vindo um erro que não consegui resolver.
No problema diz que está dando erro na conexão:

Exception in thread AWT-EventQueue-0 java.lang.RuntimeException: Erro na conexão:

at bemestarproject.ConnectionModel.getConnection(ConnectionModel.java:32)

at bemestarproject.AcessoBanco.salvarMembro(AcessoBanco.java:21)

at bemestarproject.AddMembro.salvarBtnActionPerformed(AddMembro.java:311)

at bemestarproject.AddMembro.access$100(AddMembro.java:18)

at bemestarproject.AddMembro$2.actionPerformed(AddMembro.java:139)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6533)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6298)

at java.awt.Container.processEvent(Container.java:2236)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2294)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)

at java.awt.Container.dispatchEventImpl(Container.java:2280)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at bemestarproject.ConnectionModel.getConnection(ConnectionModel.java:29)

 40 more

Acho que seja algo no Driver, no entanto não achei nada de errado na ConnectionFactory

package bemestarproject;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.logging.Level;

import java.util.logging.Logger;

/**
*

  • @author user
    */
    public class ConnectionModel {

    private static final String DRIVER = com.mysql.jdbc.Driver;
    
    private static final String URL = jdbc:mysql://localhost:3306/BemEstarBanco”;
    
    private static final String USER = root;
    
    private static final String PASS = “”;
    
    public static Connection getConnection() {
    
    try {
    
    Class.forName(DRIVER);
    
    return DriverManager.getConnection(URL, USER, PASS);
    
    } catch (ClassNotFoundException | SQLException ex) {
    
    throw new RuntimeException("Erro na conexão: ", ex);
    
    }
    
    }
    
    public static void closeConnection(Connection con) {
    
    try {
    
    if (con != null) {
    
    con.close();
    
    }
    
    } catch (SQLException ex) {
    
    Logger.getLogger(ConnectionModel.class.getName()).log(Level.SEVERE, null, ex);
    
    }
    
    }
    

    public static void closeConnection(Connection con, PreparedStatement stmt) {

    closeConnection(con);
    
     try {
    
         if (stmt != null) {
             stmt.close();
         }
    
     } catch (SQLException ex) {
         Logger.getLogger(ConnectionModel.class.getName()).log(Level.SEVERE, null, ex);
     }
    

    }

    public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs) {

    closeConnection(con, stmt);
    
     try {
    
         if (rs != null) {
             rs.close();
         }
    
     } catch (SQLException ex) {
         Logger.getLogger(ConnectionModel.class.getName()).log(Level.SEVERE, null, ex);
     }
    

    }

}

Esse outro é meu DAO:

package bemestarproject;

import java.sql.Connection;

import java.sql.Date;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.JOptionPane;

/**
*

  • @author user
    
    */
    
    public class AcessoBanco {
    
    public void salvarMembro(MembroModel m){
    
    Connection con = ConnectionModel.getConnection();
    
    PreparedStatement stmt = null;
    
    try {
         stmt = con.prepareStatement("insert into membro (nome, nacimento, escolaridade, telefone, celular, area, email, trabalho, curso, alamembro) values (?,?,?,?,?,?,?,?,?,?)");
         stmt.setString(1, m.getNome());
         stmt.setDate(2, (Date) m.getNacimento());
         stmt.setString(3, m.getEscolaridade());
         stmt.setString(4, m.getTelefone());
         stmt.setString(5, m.getCelular());
         stmt.setString(6, m.getArea());
         stmt.setString(7, m.getEmail());
         stmt.setString(8, m.getTrabalho().name());
         stmt.setString(9, m.getCurso().name());
         stmt.setInt(10, m.getAlaMembro());
         
         stmt.executeUpdate();
         
         JOptionPane.showMessageDialog(null, "Salvo com Sucesso!");
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao Salvar: " + ex);
     } finally {
         ConnectionModel.closeConnection(con, stmt);
     }
    

    }
    }

se alguém puder me ajudar, agradeço desde já!!!

14 Respostas

S

Você precisa da url, do user e da senha, mas você não passa a senha.

private static final String PASS = “”;

Você está fazendo a conexão dentro do método, que é bem ruim caso você tenha mais de um, como um listar. Você poderia fazer assim:

public class AcessoBanco {

	private Connection con;
	
	public AcessoBanco() {
		con = ConnectionFactory.getConnection();
	}
	
	public void salvarMembro(MembroModel m) {
		
		String sql = "insert into membro (nome, nacimento, escolaridade, telefone, celular, area, email, trabalho, curso, alamembro) "
				+ "values (?,?,?,?,?,?,?,?,?,?)";
		
		try {
			PreparedStatement stmt = this.con.prepareStatement(sql);
			stmt.setString(1, m.getNome());
			
			//Resto dos setters
			
			
			stmt.execute();
			stmt.close();
			JOptionPane.showMessageDialog(null, "Salvo com Sucesso!");
		}catch (SQLException ex) {
			JOptionPane.showMessageDialog(null, "Erro ao Salvar: " + ex);
		}
	}
}

Agora os métodos apenas chamariam con quando necessário, ao invés de chama-lo toda vez.

darlan_machado

Sim, precisa incluir o driver no classpath da aplicação

Guirockmartins

Eu fiz desse jeito mas de continuou a dar erro na conexão. A senha é em branco mesmo e a url pelo que eu vi está certa

darlan_machado

Usa netbeans ou eclipse?

Guirockmartins

NetBeans

darlan_machado
Solucao aceita

Acho que no netbeans, cada projeto tem um “diretório” chamado biblioteca. Clicando com o botão direito do mouse sobre ele, você pode adicionar bibliotecas (jars, no geral).
Precisa adicionar o jar do mysql-connector

Guirockmartins

Funcionouu!!!
nem acredito que era um erro tão idiota kkkkkk eu já tinha adicionado esse jar mas não na biblioteca desse projeto.
VLW AI PESSOAL!!!

A

Estou com o mesmo erro que você teve,poderia me informar qual o sistema operacional,versão do netbeans e do MySQL você “Utiliza” ?, já Realizei a solução que lhe foi dada, porem não soluciono o meu problema, o erro e o mesmo, ate a classe de conexão e DAO estão “iguais”

darlan_machado

Como não funcionou? Se o erro é referente à falta da c lasse, então é um problema de importação do driver do mysql.

rodriguesabner

Tenta limpar e construir o projeto, em alguns casos resolve

A

não funcionou cara…ta dando problema no DRIVER!

A

Já tentei também ,mais ainda esta dando problema no DRIVER.!

darlan_machado

Não funciona…
Problema com o driver…
Sem sabermos qual a mensagem exata do erro, não podemos fazer nada.

A

O camarada muito obrigado,conseguimos resolver… Era somente um erro no código e a hora do MySQL

Criado 6 de fevereiro de 2018
Ultima resposta 21 de jun. de 2018
Respostas 14
Participantes 5