Erro no metodo Find?

5 respostas
C

Galera tenho esse metodo para buscar um cliente no meu banco.. porém está me retornando esse erro:

na linha 114 tem Statement stmt = conn.createStatement();

16/09/2011 11:18:48 quitanda.Principal jMenu2MouseClicked
GRAVE: null
java.lang.NullPointerException
        at dao.Mysql.ClienteDaoMysql.find(ClienteDaoMysql.java:114)
        at quitanda.Principal.jMenu2MouseClicked(Principal.java:92)
        at quitanda.Principal.access$000(Principal.java:25)
        at quitanda.Principal$1.mouseClicked(Principal.java:58)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6270)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)

Metodo find:

public Cliente find(int clienteid)throws Exception{
		String sql = "select*from Cliente where idCliente =" + clienteid;

		// criar statement:
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery(sql);
		Cliente cliente = null;
		if(rs.next()){
			cliente = new Cliente();
			cliente.setNome(rs.getString("Nome"));
			cliente.setCpf(rs.getString("CPF"));
			cliente.setIdCliente(clienteid);
		}
		rs.close();
		stmt.close();
		return cliente;
	}

Executar consulta:

private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) {                                    
        try {
            visualizarCliente();
            ClienteDaoMysql cdao = new ClienteDaoMysql();
            Cliente cliente = new Cliente();
            cliente = cdao.find(3);

            // TODO add your handling code here:
        } catch (Exception ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
}

Onde está o erro?

5 Respostas

luxu

esse find esta indo buscar um objeto q naum foi inicializado, por isso do nullpointer,reveja!

C

luxu

Desculpa a burrice, mais como assim não foi inicializado?

luxu

de uma olhada no meu método, axo q seu erro está aí…

public Contato getContatoPorId(int id) throws SQLException { Contato contato = new Contato(); // assim q se inicia o objeto con = (Connection) Conexao.getConnection(); PreparedStatement ps = null; ResultSet rs = null; try { ps = (PreparedStatement) con.createStatement(); rs = ps.executeQuery("select * from contato where id=?"); ps.setInt(1, id); ps.execute(); contato.setIdContato(rs.getInt("idcontato")); contato.setNome(rs.getString("nome")); contato.setTelefone(rs.getString("telefone")); } catch (SQLException ex) { throw new SQLException(ex.getMessage().toString()); } finally { ps.close(); con.close(); } return contato; }

C

Luxu,

Alterei o metodo para ficar igual ao seu..

public Cliente find(int clienteid) throws Exception{
 
            Cliente cliente = new Cliente();
            conn = (Connection) ConnectionFactory.getConnection();
            String sql = "select*from Cliente where idCliente =" + clienteid;
            // criar statement:
            PreparedStatement ps = null;
            ResultSet rs = null;
            ps = (PreparedStatement) conn.createStatement();
            rs = ps.executeQuery(sql);
            ps.setInt(1, clienteid);
            ps.execute();
            cliente.setIdCliente(rs.getInt("idCliente"));
            cliente.setNome(rs.getString("Nome"));
            cliente.setCpf(rs.getString("cpf"));
            
            ps.close();
            conn.close();
            return cliente;
            
      
	}

Erro retornado:

16/09/2011 13:17:17 quitanda.Principal jMenu2MouseClicked
GRAVE: null
java.lang.ClassCastException: com.mysql.jdbc.Statement cannot be cast to java.sql.PreparedStatement
        at dao.Mysql.ClienteDaoMysql.find(ClienteDaoMysql.java:118)
        at quitanda.Principal.jMenu2MouseClicked(Principal.java:92)
        at quitanda.Principal.access$000(Principal.java:25)
        at quitanda.Principal$1.mouseClicked(Principal.java:58)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6270)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 6 segundos)
fabim

Se vc esta usando PreparedStatements, entao vc cria ela com o metodo prepareStatement() da classe Connection.
E nao faz cast como esta fazendo

Criado 16 de setembro de 2011
Ultima resposta 16 de set. de 2011
Respostas 5
Participantes 3