Problemas com NullPointerException

3 respostas
arthurthiago

Eu denovo galera! hehehe

O negócio é o seguinte… Eu tenho um método que passa os dados dos clientes contidos em um banco de dados da seguinte forma:

encapsulo em objetos da classe Usuario e adiciono em um ArrayList que será retornado:

public ArrayList retornaDados(String tabela) { conectaBanco(); try { ArrayList dados = new ArrayList(); String sql = "SELECT * FROM " + tabela; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int cid = rs.getInt("id"); String cnome = rs.getString("nome"); String cmat = rs.getString("matricula"); String ctel = rs.getString("telefone"); String ccel = rs.getString("celular"); String cemail = rs.getString("email"); Usuario usertemp = new Usuario(tabela, cid, cnome, cmat, ctel, ccel, cemail); dados.add(usertemp); } rs.close(); stmt.close(); desconectaBanco(); return dados; } catch (SQLException e) { System.out.println("Ocorreu uma SQLException no método retornaDados() da classe Usuario."); e.printStackTrace(); return null; } }

Mas como na JTable não aceita ArrayList (pelomenos creio que não) eu transformo esse ArrayList em um Object[][] com o seguinte método da classe Utilitarios:

public static Object[][] transformaArray(ArrayList lista) { Object[][] dados = null; int linhas = lista.size(); try { for (int i = 0; i < linhas; i++) { Usuario usertemp = (Usuario)lista.get(i); dados[i][0] = (String)Integer.toString(usertemp.getId()); System.out.println("ID: " + Integer.toString(usertemp.getId())); dados[i][1] = usertemp.getNome(); System.out.println((String)dados[i][1]); if (usertemp.getMat() != null) { dados[i][2] = usertemp.getMat(); } if (usertemp.getTel() != null) { dados[i][3] = usertemp.getTel(); } if (usertemp.getCel() != null) { dados[i][4] = usertemp.getCel(); } if (usertemp.getEmail() != null) { dados[i][5] = usertemp.getEmail(); } } } catch (NullPointerException e) { System.out.println("Ocorreu um erro NullPointerException no método transformaArray() da classe Utilitarios."); e.printStackTrace(); return new Object[1][1]; } return dados; }

O erro ocorre neste método, dá uma NullPointerException e entra no catch… O negócio é que eu já testei os valores que estão no ArrayList e não tem nenhum campo null.

Existe um campo int mas eu passo pra String já que array só aceita ser de um tipo…

3 Respostas

lcegatti

O Problema esta aqui

Object[][] dados = null;

vc deve instanciar seu array de objetos antes de usa-lo uma dica, para o primeiro tamanho do array pega o tamanho de sua lista e para o outro coloque o numero de atributos de sua classe Usuario,exemplo:

Object[][] dados = new Object[lista.size()][numeroAtributosClasse];

Acho que é isso
[]'s

nbluis

Cara, meio bizzaro esse teu codigo, mas pra trabalhar com a Table dá uma olhada nos objetos TableModel e DefaultTableModel, facilita bastante.

Até mais…

arthurthiago

Putz cara… era esse o problema mesmo!!

huhuuhuh

agora o programa tah rodando 100%!

vlw!

Criado 17 de fevereiro de 2007
Ultima resposta 17 de fev. de 2007
Respostas 3
Participantes 3