Tipos de Dados incompativeis na expressao de criterio

6 respostas
L

Tenho uma classe de pagamento de Divida, que recebe os clientes, e as dividas cadastradas dos clientes. Em um comboBox escolho o cliente, e altomaticamente em um outro combo box é listado todos os codigos de suas dividas, ate ai corria tudo bem. Quando adicionei um textField para quando eu selecionar o codigo da divida, o valor dessa divida aparecer nele, apresentou a SQLException : Tipos de Dados incompativeis na expressao de criterio. O erro aparece quando executo a classe, e volta a aparecer quando seleciono um novo codigo de divida.

Codigo que lista os codigos de divida:

public void setCodDivida(){

        cb_codDividaCliente.removeAllItems();
        conDivida.execuçaoSQL("select * from divida where cliente='"+this.cb_cliente.getSelectedItem()+"'");
        try {
            while (conDivida.resultset.next()) {
                cb_codDividaCliente.addItem(conDivida.resultset.getString("codigo"));
            }
        } catch (SQLException erro) {

            JOptionPane.showMessageDialog(null,"Erro");

        }

Codigo que mostra o valor da divida:

public void setDivida(){

       conDivida.execuçaoSQL("select * from divida where codigo ='"+this.cb_codDividaCliente.getSelectedItem()+"'");
        
        try{
        tf_dividaCliente.setText(conDivida.resultset.getString("valorDivida"));
        }
        catch(SQLException erro){

            JOptionPane.showMessageDialog(null,"Erro");

        }
    }

6 Respostas

carlos_hen

Então kara… o que deve estar acontecendo é o seguinte.

Esse getString do conDivida.resultset.getString(“valorDivida”) deve ser o problema.

Provavelmente o seu campo valorDivida não é no banco do tipo varchar, portanto não poderá ser obtido com um getString.
Verifica o tipo do campo valorDivida, e define o get de acordo com este.

E após isso, você chama um toString para o seu tf_dividaCliente.setText.

Por exemplo, vamos supor que o campo “valorDivida” seja no banco do tipo decimal ou float.

Faça assim:

Float valor = conDivida.resultset.getFloat("valorDivida");
tf_dividaCliente.setText(valor.toString());

Falows.

Ermin

Cara tenta modificar assim no recebimento e atribuiççao ao Combo.
Obs: Como trata-se de valores monetários é sempre bom usar o tipo Double, deixando o tipo float mais pra cálculos
extremamente precisos.

//Recebendo o valor
Double valor = conDivida.resultset.getDouble(“valorDivida”);

//Repassando o valor
tf_dividaCliente.setText(String.valueOf(valor));

Cara, vc pode tbm listar isso numa JTable e selecionar diretamente na table o item q vc quer tratar.
Qualquer coisa coloca um post Aqui!

L

Fiz o que disseram, mas continuou o msm erro. E tambem o primeiro valor é sempre listado, exemplo: A divida cod:1, e o valor da Divida:1000. Percebi que a Exception vem da classe de conexão, na execuçãoSQL.

A messagem de erro vem daqui try Catch:

public void execuçaoSQL( String sql){

      boolean result = true;
        try{
            statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery(sql);
        }
        catch(SQLException sqlex){
            JOptionPane.showMessageDialog(null,"Não foi Possivel "+
                    "Executar o Comando SQL! "+sqlex);

       }
    }
Ermin

Cara vc ta complicando, vou te passar um trecho pra vc substituir por esse q vc enviou, ai vc me avisa se der certo. BEm simples: não precisa usar o TYPE SCROLL SENSITIVE!

[Code]
public void executeSQL(String sql){

try{
        statement = con.createStatement();
        resultset = statement.executeQuery(sql);
    }
    catch(SQLException ex){
        JOptionPane.showMessageDialog(null, "Não foi possivel executar o comando "+ex);
    }

}

L

Cara so coloquei esse codigo ae, pra mostrar de onde vem a exception. num vai imfluenciar em nada mudar ele.

Ermin

COm toda certeza domundo. Depois dá uma estudadinha na SCROLL SENSITIVE qdo iserido dentro de resultset (faz toda diferença)!

Criado 8 de setembro de 2010
Ultima resposta 8 de set. de 2010
Respostas 6
Participantes 3