1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Boa tarde, estou fazendo um programa de cadastro usando Java com Swing e MySQL. Estou tendo problemas na conexão do programa com o banco, a tela inicial do programa abre, mas quando mando abrir uma segunda tela e consequentemente abrir o banco junto, tenho o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Notei que está retornando dois nulos na conexão, detalhe essa classe de conexão peguei de um site, meu grande problema está sendo essa conexão pois o banco consegui criar no MySQL WorkBench (outra coisa que queria saber era isso, recomendam o uso dela? ou melhor utilizar o convencional por linha de comandos?).

Sem mais delongas, isso é o que está saindo no terminal:

Conectando ao Banco de Dados
null
null
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at nDAO.ClienteDao.findClientes(ClienteDao.java:49)
    at Controle.ClienteController.listaClientes(ClienteController.java:71)
    at Janelas.CadCliente.<init>(CadCliente.java:667)
    at Janelas.TelaInicial.menu_cliente_cadastroActionPerformed(TelaInicial.java:151)
    at Janelas.TelaInicial.access$000(TelaInicial.java:14)
    at Janelas.TelaInicial$1.actionPerformed(TelaInicial.java:86)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3322)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
    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)

E esta é a classe de conexão:

package nDAO;

/**
 *
 * @author Kaue
 */

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

public class ConnectionDataBase {

    private static final String URL_MYSQL = 
        "jdbc:mysql://localhost/mantiqueiraap?zeroDateTimeBehavior=convertToNull";

    private static final String DRIVER_CLASS = 
        "com.mysql.jdbc.Driver";

    private static final String USER = "root";

    private static final String PASS = "root";

    public static Connection getConnection() {
        System.out.println("Conectando ao Banco de Dados");
        try {
            Class.forName(DRIVER_CLASS);
            return DriverManager.getConnection(URL_MYSQL, USER, PASS);
        } catch (ClassNotFoundException e) {
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return null;
    }

}

Primeira classe citada no erro (ClienteDao), o erro é na linha "PreparedStatement stmt = conn.prepareStatement(select);":

package nDAO;

/**
 *
 * @author Kaue
 */

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

public class ClienteDao extends GenericDao {

    public void salvar(Cliente cliente) throws SQLException {
        String insert = "INSERT INTO CLIENTE(Clinome, Cliendereco, Clicidade, Clicep, Cliuf, Clitelefone, Clicaixa) VALUES(?,?,?,?,?,?,?,?)";
        save(insert, cliente.getClinome(), cliente.getCliendereco(), cliente.getClicidade(), cliente.getClicep(), cliente.getCliuf(), cliente.getClitelefone(), cliente.getClicaixa());
    }

    public void alterar(Cliente cliente) throws SQLException {
        String update = "UPDATE CLIENTE " +
                "SET Clinome = ?, Cliendereco = ?, Clicidade = ?, Clicep = ?, Cliuf = ?, Clitelefone = ?, Clicaixa = ? " +
                "WHERE Cliid = ?";
        update(update, cliente.getCliid(), cliente.getClinome(), cliente.getCliendereco(), cliente.getClicidade(), cliente.getClicep(), cliente.getCliuf(), cliente.getClitelefone(), cliente.getClicaixa());
    }

    public void excluir(long Cliid) throws SQLException {
        String delete = "DELETE FROM CLIENTE WHERE Cliid = ?";
        delete(delete, Cliid);
    }

    public List<Cliente> findClientes() throws SQLException {
        List<Cliente> clientes = new ArrayList<>();

        String select = "SELECT * FROM CLIENTE";

    try {   
    Connection conn = getConnection();
    System.out.println(conn);
    PreparedStatement stmt = conn.prepareStatement(select);
    ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
                Cliente cliente = new Cliente();
                cliente.setCliid(rs.getInt("cliid"));
                cliente.setClinome(rs.getString("clinome"));
                cliente.setCliendereco(rs.getString("cliendereco"));
                cliente.setClicidade(rs.getString("clicidade"));
                cliente.setClicep(rs.getString("clicep"));
                cliente.setCliuf(rs.getString("cliuf"));
                cliente.setClitelefone(rs.getString("clitelefone"));
                cliente.setClicaixa(rs.getBigDecimal("clicaixa"));
                clientes.add(cliente);
         }
} catch(SQLException ex){
 throw ex;
}

        return clientes;
    }

    public Cliente findByName(String clinome) throws SQLException {
        String select = "SELECT * FROM CLIENTE WHERE clinome = ?";
        Cliente cliente = null;
        try (PreparedStatement stmt = getConnection().prepareStatement(select)) {
            stmt.setString(1, clinome);
            try (ResultSet rs = stmt.executeQuery()) {
                while (rs.next()) {
                    cliente = new Cliente();
                    cliente.setCliid(rs.getInt("cliid"));
                    cliente.setClinome(rs.getString("clinome"));
                    cliente.setCliendereco(rs.getString("cliendereco"));
                    cliente.setClicidade(rs.getString("clicidade"));
                    cliente.setClicep(rs.getString("clicep"));
                    cliente.setCliuf(rs.getString("cliuf"));
                    cliente.setClitelefone(rs.getString("clitelefone"));
                    cliente.setClicaixa(rs.getBigDecimal("clicaixa"));
                }
            }
        }
        return cliente;
    }

}

Segunda classe citada no erro (ClienteController) o erro é na linha "return dao.findClientes();":

package Controle;

/**
 *
 * @author Kaue
 */

import Modelo.Cliente;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import javax.swing.*;
import nDAO.ClienteDao;

public class ClienteController {

    /* MONETÁRIO

    private Monetario formatarMonetario(String Strclicaixa) throws ParseException {
        Locale brasil = new Locale ("pt", "BR");
        DecimalFormat df = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (brasil)); 
        return new Monetario( formatter.parse(Strclicaixa).getTime() );
    }

    */


    public void salvar(String clinome, String cliendereco, String clicidade, String clicep, String cliuf, String clitelefone, BigDecimal clicaixa) 
        throws SQLException, ParseException 
        {
        Cliente cliente = new Cliente();
        cliente.setClinome(clinome);
        cliente.setCliendereco(cliendereco);
        cliente.setClicidade(clicidade);
        cliente.setClicep(clicep);
        cliente.setCliuf(cliuf);
        cliente.setClitelefone(clitelefone);
        cliente.setClicaixa(clicaixa);

        new ClienteDao().salvar(cliente);
        }

    public void alterar(int cliid, String clinome, String cliendereco, String clicidade, String clicep, String cliuf, String clitelefone, BigDecimal clicaixa) 
        throws ParseException, SQLException 
    {

        Cliente cliente = new Cliente();
        cliente.setCliid(cliid);
        cliente.setClinome(clinome);
        cliente.setCliendereco(cliendereco);
        cliente.setClicidade(clicidade);
        cliente.setClicep(clicep);
        cliente.setCliuf(cliuf);
        cliente.setClitelefone(clitelefone);
        cliente.setClicaixa(clicaixa);

        new ClienteDao().alterar(cliente);
    }

    public List<Cliente> listaClientes() {
        ClienteDao dao = new ClienteDao();
        try {
            return dao.findClientes();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, 
                "Problemas ao localizar cliente" + 
                e.getLocalizedMessage()
            );
        }
        return null;
    }

    public void excluir(long id) throws SQLException {
        new ClienteDao().excluir(id);
    }

    public Cliente buscaClientePorNome(String nome) throws SQLException {
        ClienteDao dao = new ClienteDao();
        return dao.findByName(nome);
    }




}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags mysql java javafx swing ou faça a sua própria pergunta.