[Resolvido] Select Count no PreparedStatement

7 respostas Resolvido
netbeanspostgresqljava
rodriguesabner

Fala pessoal! Beleza?

Eu queria fazer uma contagem de todas as minhas colunas.

Minha query

select count (idcliente) from venda as total

Meu Prepared:

public void totalVendas() {
        try {
            PreparedStatement pst = conecta.conn.prepareStatement("select count (idcliente) from venda as total");
            pst.setString(1, campovendas.getText());
            pst.executeUpdate();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(rootPane, "Erro!/n" + ex);
        }
    }

Só que ele da erro, fala que o numero de índice é 1, e o de colunas é 0.

Alguém sabe o que pode ser?

7 Respostas

S

Você o que?

Mas se a tag tiver certa, o que você quer é isso: http://www.postgresqltutorial.com/postgresql-count-function/

rodriguesabner

Opa cara, perdão, eu nem vi que tinha enviado a minha pergunta. Valeu por responder, mas o meu problema mesmo é quando jogo pra o preparedStatement

S

Você usa:

"select count (idcliente) from venda as total"

Em um preparedStatement mas não diz onde vai o parâmetro na linha seguinte, ( pst.setString(1, campovendas.getText()); ). Se eu fosse dizer algo, falta um where idCliene = ?;

rodriguesabner

Cara, ele funciona. mas não me retorna nada :frowning:

public void totalVendas() {
        try {
            PreparedStatement pst = conecta.conn.prepareStatement("select count (idcliente) from venda where idcliente=?");
            pst.setString(1, campovendas.getText());
            pst.execute();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(rootPane, "Erro!/n" + ex);
        }
    }

Se eu coloco o valor “1” ou “2” no lugar do “?”, ele me retorna só os dados do cliente com id 1 ou 2

S

Você está não passando um objeto para o método, mas está usando algo do mesmo objeto, e quando não se inicia nada no objeto, ele toma valor 0 caso seja relacionado a um número.

rodriguesabner

Chamei um pst.setInt(1, Integer.parseInt(campovendas.getText()));, mas sem retorno também

rodriguesabner
Solucao aceita

Netão, consegui:

public void totalVendas() {
        try {
            String sql=("select count (idcliente) from venda as total"); // lista o codigo
            conecta.executaSQL(sql); //executa a funcao no BD
            conecta.rs.first();// pega o primeiro registro
            campovendas.setText(String.valueOf(conecta.rs.getInt(1)));// converte ele no primeiro registro para o textField
        } catch (SQLException ex) {
            Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
Criado 19 de março de 2018
Ultima resposta 19 de mar. de 2018
Respostas 7
Participantes 2