[RESOLVIDO]problema ao conectar jtable com mysql

10 respostas
R

O codigo aparentemente não tem erros, mas o SQL retorna uma exceção:
no value specified for parameter 1

A ideia é: quando clicar em “consultar”, a jtable é preenchida com todos os valores do banco.
Fiz a conexão na mesma classe, uma grande desvantagem na prática, mas não importa; isso é porque eu quero treinar essa parte, mesmo.

DefaultTableModel modelo = new DefaultTableModel();
        tabela = new JTable (modelo);
        try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con;
        con = DriverManager.getConnection("jdbc:mysql://localhost/bbcbb", "root", "");
        String inserir = "SELECT (cod_usu,usuario, telefone, endereco, email) FROM login VALUES(?,?,?,?,?)";
        PreparedStatement smt = con.prepareStatement(inserir);
        ResultSet rs = smt.executeQuery();
        rs.first();
        while (!rs.next()){
           modelo.addRow(
                new Object []{
                    rs.getObject("cod_usu"),
                    rs.getObject("usuario"),
                    rs.getObject("telefone"),
                    rs.getObject("endereco"),
                    rs.getObject("email"),
                }
           );
            }
        smt.close();
        con.close();
               

        }catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null, e);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }

10 Respostas

ViniGodoy

Essa sintaxe SQL é completamente inválida. Aparentemente, durante o copy&paste, você misturou o código de um SELECT com o de um INSERT.

O correto seria:

String sql = "SELECT cod_usu,usuario, telefone, endereco, email FROM login";

Além disso, não use DefaultTableModel.

R

eeeer… é verdade.
mas agora não aparece nada na tabela. ;/

obs: eu ja li seu tutorial sobre nao usar DefaultTableModel. Só não o apliquei ainda.

ViniGodoy

O certo no while seria:

while (rs.next()) {

Sem a negação.

R

ainda não foi.

ViniGodoy

Retire a linha 10, que diz:

rs.first();

E, se não for, poste o erro.

R

Não foi mesmo não.

O problema é que desde que eu corrigi a string, o SQL não retorna nenhuma exception, simplesmente não acontece NADA quando eu clico em consultar.

private void bttconsultarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        DefaultTableModel modelo = new DefaultTableModel();
        tabela = new JTable (modelo);
        
        try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con;
        con = DriverManager.getConnection("jdbc:mysql://localhost/"bbcbb", "root", "");
        String consultar = "SELECT cod_usu,usuario, telefone, endereco, email FROM login";
        PreparedStatement smt = con.prepareStatement(consultar);
        ResultSet rs = smt.executeQuery();
        while (rs.next()){
        
        
           modelo.addRow(
                new Object []{
                    rs.getObject("cod_usu"),
                    rs.getObject("usuario"),
                    rs.getObject("telefone"),
                    rs.getObject("endereco"),
                    rs.getObject("email"),
                }
           );
            }
        smt.close();
        con.close();
               

        }catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null, e);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }

}
vtr002

tem uma aspa fora do lugar na linha 9. deveria dar erro de compilação ali

R

Ah sim, mas aquilo ali não existe. Foi na hora de substituir aqui, isso são valores fictícios.

Na verdade meu bd é de outro nome, e usa senha. Pode não ter nada a ver, mas por uma questao de segurança, sei la, não quero postar isso aqui. Desculpe.

No meu código mesmo, do netbeans, ta tudo certo. Eu ja conferi.

R

Alguém?

Ah, acabei de encontrar o problema: a String consultar não está sendo usada. (grifado de amarelo no netbeans).
“Local variable hides a field”
Eu acabei de renomear essa variável para sql, não está mais grifado, mas também não resolveu. O botão consultar continua não me retornando nada na JTable.

Que coisa!

R

CONSEGUI.

era a inicialização do DefaultTableModel. O correto é:

DefaultTableModel modelo = (DefaultTableModel)tabela.getModel();
Criado 16 de dezembro de 2012
Ultima resposta 17 de dez. de 2012
Respostas 10
Participantes 3