JTable+SQL

3 respostas
E

Oi Pessol, eu estou iniciando agora em Java, e estou tentando colocar o resultado de uma consulta em um JTable, só q eu não estou conseguindo, já mandaram eu definir um modelo p/ a tabela só q agora está dando o seguinte erro:“Exception occurred during event dispatching: java.lang.IllegalArgumentException: setDataVector() - Null parameter”, quem pode me ajudar, a seguir está o código do programa:

CÓDIGO:

package sgpe;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.<em>;

import com.borland.dbswing.</em>;

import java.sql.<em>;

import com.borland.dx.sql.dataset.</em>;

import com.borland.dx.dataset.<em>;

import java.sql.</em>;

import javax.swing.table.DefaultTableModel;
public class ConAluno extends JFrame {

JPanel contentPane;

JButton btConsultar = new JButton();

JLabel jLabel1 = new JLabel();

JTextField tfNome = new JTextField();

private JButton btFechar = new JButton();
String[] colunas = new String []{Matricula,Nome,Telefone,Celular,E-mail};//

String dados[][];

JScrollPane jScrollPane1 = new JScrollPane();

//JTable jTable1 = new JTable(dados,colunas);

DefaultTableModel modelo = new DefaultTableModel(dados, colunas); //erro

JTable jTable1 = new JTable(modelo);
/*<em>Construct the frame</em>/

public ConAluno() {

enableEvents(AWTEvent.WINDOW_EVENT_MASK);

try {

jbInit();

}

catch(Exception e) {

e.printStackTrace();

}

}

/*<em>Component initialization</em>/

private void jbInit() throws Exception  {

//setIconImage(Toolkit.getDefaultToolkit().createImage(LocAluno.class.getResource("[Your Icon]")));

contentPane = (JPanel) this.getContentPane();

contentPane.setLayout(null);

this.setSize(new Dimension(510, 315));

this.setTitle(Consultar Aluno);

btConsultar.setText(Consultar);

btConsultar.setBounds(new Rectangle(388, 15, 96, 27));

btConsultar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

btConsultar_actionPerformed(e);

}

});

jLabel1.setText("Nome: ");

jLabel1.setBounds(new Rectangle(29, 26, 57, 17));

tfNome.setBounds(new Rectangle(80, 20, 284, 21));

btFechar.setText(Fechar);

btFechar.setBounds(new Rectangle(212, 254, 79, 27));

btFechar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

btFechar_actionPerformed(e);

}

});

jScrollPane1.setBounds(new Rectangle(28, 50, 453, 189));

contentPane.add(jLabel1, null);

contentPane.add(tfNome, null);

contentPane.add(btConsultar, null);

//

contentPane.add(jScrollPane1, null);

contentPane.add(btFechar, null);

jScrollPane1.getViewport().add(jTable1, null);

}

/*<em>Overridden so we can exit when window is closed</em>/

protected void processWindowEvent(WindowEvent e) {

super.processWindowEvent(e);

if (e.getID() == WindowEvent.WINDOW_CLOSING) {

<a href="//System.exit">//System.exit</a>(0);

}

}
void btConsultar_actionPerformed(ActionEvent e) {

//Consulta os alunos q atendem ao parametro dado

try{

Statement s = Conexao.getConnection().createStatement();

//String sql = “select * from aluno where nome_aluno like '” + adto.getNome()+ “*’”;

String sql = select * from aluno where nome_aluno like Jacyara’”;

ResultSet rs = s.executeQuery(sql);

//dados = new String [2][5];

//int lin = 0;

//

DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();

while (rs.next()){

/<em>dados[lin][0] = rs.getString(mat_aluno);

dados[lin][1] = rs.getString(nome_aluno);

dados[lin][2] = rs.getString(fone_aluno);

dados[lin][3] = rs.getString(cel_aluno);

dados[lin][4] = rs.getString(email_aluno);

++lin;</em>/

modelo.addColumn(rs.getString(mat_aluno));

modelo.addColumn(rs.getString(nome_aluno));

modelo.addColumn(rs.getString(fone_aluno));

modelo.addColumn(rs.getString(cel_aluno));

modelo.addColumn(rs.getString(email_aluno));

//

}

}

catch (SQLException ex) {

new MessageDialog(this,"Erro no acesso ao Banco de Dados "+

ex.getMessage(),true).setVisible(true);

}

catch (ClassNotFoundException ex) {

new MessageDialog(this,"Driver não encontrado "+

ex.getMessage(),true).setVisible(true);

}

}
void btFechar_actionPerformed(ActionEvent e) {

dispose();

}

}

Grata desde já,

3 Respostas

hmichel

na linha onde tem String dados[][], você deve inicializar esta propriedade, pois ela é nula.

E

Obrigada, já alterei a declaração de dados e funcionou, mas como é q eu faço p/ colocar as linhas q eu recuperei do Select na tabela?

hmichel

De uma olhada neste link:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
O tutorial de swing eh sempre um parceitro inseparável de qualquer desenvolvedor.

Criado 4 de dezembro de 2004
Ultima resposta 5 de dez. de 2004
Respostas 3
Participantes 2