Ajuda - ParseInt

Bom dia pessoal, sou novo no grupo e em desenvolvimento java gostaria da ajude vocês. Estou fazendo um mostra dados e consegui fazer com que o estado aparaça normalmente mas a cidade está me dando um pouco de trabalho pois ela não retorna forma alguma. Segue abaixo o código.

        try{
            
  
            int numCidade = Integer.parseInt(conect.resultSet.getString("numCidade"));
            c.executeSQL("SELECT nmCidade FROM tbl_cidades where idCidade="+numCidade);
            c.resultSet.first();
            cbxCidade.setSelectedItem(c.resultSet.getString("nmCidade").toUpperCase());
            
            int numEstado = Integer.parseInt(conect.resultSet.getString("sgEstado"));
            c.executeSQL("SELECT sgEstado FROM tbl_estados where idEstado="+numEstado);
            c.resultSet.first();
            cbxEstado.setSelectedItem(c.resultSet.getString("sgEstado").toUpperCase());

        }catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Informações não encontradas:"+e);
        }
    }

Não é porque a coluna no banco é nmCidade e você tá procurando uma coluna chamada numCidade?

Já tentei também, mas numCidade está relacionado no banco na tabela de cadastro do cliente, e , nmCidade está relacionado na tabela cidade. Tenho duas tabelas de estado e eidade separadas e na tabela cliente apenas salva as id´s das tabelas cidade e estado.

Ao fazer somente conect.resultSet.getString("numCidade") o que retorna?

Não retornou erro porém quando executa a aplicação retorna o Estado em que foi registrado o cliente e não retorna a cidade cadastrada.

Então, o que que retorna naquela linha?
Nada?
Se for nada, o parseInt() não vai funcionar mesmo ._.

Outra coisa, se o campo é numérico (inteiro), pq vc usa o getString("numCidade") e não o getInt("numCidade")?

A ideia é pegar a idCidade da cidade na tabela cidade e apontar o nome da cidade nmCidade e gravar a idCidade na tabela cliente em numCidade, quando buscar o cliente o parseInt faz a conversão da id e retorna o nome da cidade cadastrada.

Você consegue debugar esse código?
Se nao conseguir, colocar esse comando após chamar o c.resultset.first():

System.out.println(c.resultSet.getString("nmCidade"));

Fora isso, umas observaçoes gerais sobre seu código:

  • Nao é preciso prefixar suas tabelas com tbl_, geralmente é bem óbvio que sao tabelas.
  • Evite abreviaturas em nomes em geral: num, nm, c. Prefira a forma completa e clara.
  • Falando nisso, se uma coluna é da tabela cidades, nao precisa repetir nomeCidade (ou siglaEstado na tabela estados)
  • Resultsets tem um método getInt. Você pode usar diretamente ao invés de parseInt(getString)
  • Outra coisa sobre resultsets, geralmente é uma má idéia que eles sejam atributos de uma classe (como em c.resultset ou conect.resultSet). Dá menos dor de cabeça manterem eles como variáveis locais que sao propriamente descartadas assim que usadas. seu método c.executeSQL por exemplo, poderia retornar um novo resultSet ao invés de preencher um atributo da classe com ele.
  • Aliás, porque você criou um método executeSQL se a classe Connection já tem um método que faz exatamente isso?

Cara, faça o System.out.println como o amigo de cima está falando e poste o que saiu.

Você não entendeu a minha última pergunta.

Além do getString() existe também o getInt().
Se o campo é inteiro, você não precisa usar o getString() e depois fazer o parseInt, pode chamar direto o getInt, que te retorna um inteiro.

ok, vou fazer e envio o resultado.

1 curtida

Vou procurar mais sobre o getInt() e fazer a linha de código de novo e envio o resultado também.

1 curtida