Como fazer uma consulta ao banco de dados access e retornar no JTable?

4 respostas
L

Alguém poderia me ajudar?

No meu JFrame(formulário) eu tenho o seguinte:

1 textfield  (para a pessoa entrar com o cpf do cliente);

1 JTable para retornar os valores consultados, eu defini 3 colunas no JTable(Nome,cic,telefone);

1 Jbottom com o nome Consultar;

como eu faço para consultar o banco de dados referente ao cic digitado e retornar os dados do mesmo.(nome,cic,telefone)??? Me passem como eu devo fazer, se possível passo-a-passo.

Onde eu devo colocar a condição(IF cic do textfield==cic do banco de dados) then retornar os dados. No comando do botãoo consultar???

MUITO OBRIGADO!!!

4 Respostas

Fernandojdk

Primeiro, qual banco de dados esta usando…???

Segue um exemplo de acesso supondo que vc tenha algum conhecimento de acesso ao mysql…

DefaultTableModel modelo = (DefaultTableModel)table.getModel();//obtem o tablemodel da tabela
            RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(modelo);//Cria um filtro para a tabela
            table.setRowSorter(sorter);    //seta o filtro criado

Statement stm = conn.createStatement();//cria um novo Statement para acesso ao banco de dados
ResultSet rs = stm.executeQuery("SELECT nome, cic, telefone FROM tbclientes WHERE cpf = \"" + txtCPFgetText() + "\"");//cria um ResultSet com o resultado da consulta

                while (rs.next()){//enquanto ouver registro
                    Object[] novaLinha = new Object[3];//cria um array de objetos com a quantidade igual as colunas da table
                    novaLinha[0] = rs.getString("nome");
                    novaLinha[1] = rs.getString("cic");
                    novaLinha[2] = rs.getString("telefone");
                    modelo.addRow( novaLinha );//adiciona uma nova linha ao tablemodel da tabela
                }

vc deve circular com try e catch…

Axo q deve funcionar num testei ainda…

L

Oww FernandoJdk, valeww pela forçaa,
o banco de dados que estou usando é o access mesmo, só que, quando eu crio o meu método consultar na classe CadastroCliente, ele não consegue vizualizar o txtconcin.gettext() ->(este é o textfield do JFrame ConsultarCliente que eu criei)
entaum segue abaixo o código:

package locadora;

import java.sql.<em>;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.</em>;

/**
*

  • @author Fam
    */
    public class CadastroCliente {

    private String nomecliente;
    
    private String cic;
    
    private String endereco;
    
    private String telefone;
    
    private String pendencia;
    
    private String datacliente;
    
    private String tipocartao;
    
    private String outros;
    
    public Connection PrjSoft;
    
    public Statement stmSQL;
    
    public ResultSet resSQL;
    

    /** Creates a new instance of CadastroCliente */
    public CadastroCliente() {

    try{
    
    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
    
    PrjSoft = DriverManager.getConnection(“jdbc:odbc:projetodesoftware,"","");
    
    stmSQL = PrjSoft.createStatement();
    
    }
    
    catch(ClassNotFoundException ex){
    
    System.out.println(“Erro na Classe do driver JDBC”);
    
    }
    
    catch(SQLException ex){
    
    System.out.println(“Erro ao conectar no banco. Nro: + ex.getMessage());
    
    }
    
    }
    
public ResultSet consultar()

{

try

{

resSQL = stmSQL.executeQuery(Select * FROM clientes where cic = “” + txtconcic.gettext() + “””);

return resSQL;

}

catch (Exception e)

{

System.out.println("ERRO : " + e.getMessage());

return resSQL;

}

}

}

CÓDIGO DO BOTÃO

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO adicione seu código de manipulação aqui:

CadastroCliente objcon = new CadastroCliente();

ResultSet lista = objcon.consultar();

try

{

int nrolinha=0;

while(lista.next());

{

jtbcliente.setValueAt(lista.getString(nomecliente),nrolinha,0);

jtbcliente.setValueAt(lista.getString(cic),nrolinha,1);

jtbcliente.setValueAt(lista.getString(endereco),nrolinha,2);

jtbcliente.setValueAt(lista.getString(telefone),nrolinha,3);

nrolinha++;

}

}

catch (Exception e)

{

System.out.println(e.getMessage());

}

}

o que será heinnn???

OBS*: txtconcic(textfield) do JFrame ConsultarCliente.
será que é o caso dele naum ser público??

Obrigadãooo!!!

L

Olha o que eu tentei fazerr, mais naum deu certo naummm

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO adicione seu código de manipulação aqui:

CadastroCarro objcarro = new CadastroCarro();

ResultSet listacarros = objcarro.consultarcarros();

try

{

int nrolinha=0;

    if(txtnomecarro.setText()==listacarros.getString(nomecarro))

{

tbcarro.setValueAt(listacarros.getString(nomecarro),nrolinha,0);

tbcarro.setValueAt(listacarros.getString(tipo), nrolinha, 1);

tbcarro.setValueAt(listacarros.getString(ano), nrolinha, 2);

}

}

catch (Exception e )

{

System.out.println(e.getMessage());

}

}

Não daria pra fazer algo + ou - assim???

Valewww!!!

wamarra
CÓDIGO DO BOTÃO
Tente fazer o que o fernando falou só que fazendo a busca no banco de dados direto do evento do JButton:
private void nomeDoSeuEvento(java.awt.event.ActionEvent evt) { 
      try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   
            String url = "jdbc:odbc:projetodesoftware";   
            String usuario = "";   
            String senha = "";   
            Connection con;   
            con = DriverManager.getConnection(url, usuario, senha);
            PreparedStatement ps = con.prepareStatement("Select * FROM clientes where cic = ?");
            ps.setString(1, txtconcic.getText());
            ResultSet rs = ps.executeQuery();
               
            while (rs.next()){                
                    Object[] novaLinha = new Object[3];//cria um array de objetos com a quantidade igual as colunas da table   
                    novaLinha[0] = rs.getString("nome");   
                    novaLinha[1] = rs.getString("cic");   
                    novaLinha[2] = rs.getString("telefone");   
            
                    modelo.addRow( novaLinha );//adiciona uma nova linha ao tablemodel da tabela 
             }

             con.close();
       }catch (ClassNotFoundException e ){     
               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());     
                       e.printStackTrace();     
       }catch (SQLException e){     
                       e.printStackTrace();
       }
}
T+
Criado 23 de novembro de 2007
Ultima resposta 25 de nov. de 2007
Respostas 4
Participantes 3