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.
Não é porque a coluna no banco é nmCidade e você tá procurando uma coluna chamada numCidade?
J
jaofonso
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.
igorventurelli
Ao fazer somente conect.resultSet.getString("numCidade") o que retorna?
J
jaofonso
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.
igorventurelli
Então, o que que retorna naquela linha?
Nada?
Se for nada, o parseInt() não vai funcionar mesmo ._.
igorventurelli
Outra coisa, se o campo é numérico (inteiro), pq vc usa o getString("numCidade") e não o getInt("numCidade")?
J
jaofonso
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.
A
AbelBueno
Você consegue debugar esse código?
Se nao conseguir, colocar esse comando após chamar o c.resultset.first():
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?
igorventurelli
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.
J
jaofonso1 like
ok, vou fazer e envio o resultado.
J
jaofonso1 like
Vou procurar mais sobre o getInt() e fazer a linha de código de novo e envio o resultado também.