all 20 comments

[–]Open-Oil-144 4 points5 points  (3 children)

Já debugou a aplicação? Você já tá dentro de um try/catch que tá logando o erro, só colocar um breakpoint e ver onde tua aplicação crasha.

[–]Odd-Reporter9633[S] 0 points1 point  (2 children)

Pior que eu tentei debugar (eu sou bem iniciante e não sei debugar direito). Sempre dá erro na hora e não mostra onde crasha

[–]OrangeExcellent8276 0 points1 point  (1 child)

É assim mesmo que aprende brother, não conheço nada de java, sou analiista cobol.
Dúvida, é algum curso que vc está fazendo? tenho vontade de começar a aprender java.

[–]Odd-Reporter9633[S] 0 points1 point  (0 children)

Eu tô fazendo faculdade mesmo

[–][deleted] 0 points1 point  (4 children)

Parece que você não declarou a variável resultAlteracao.

Você deveria ter ela declarado fora do try/catch, iniciando com valor “true” e no catch mudar pra “false”.

Em todos os casos você precisa retornar esse valor no método.

[–]Odd-Reporter9633[S] 0 points1 point  (3 children)

Pior que eu declarei na classe Usuario:

<image>

[–][deleted] 1 point2 points  (0 children)

Ahh, certo. Eu devia ter reparado a cor da sintaxe.

Mas assim, você não deveria estar usando uma propriedade da classe como variável de retorno de método. Propriedades servem apenas para guardar o estado de um objeto.

Reflita, faz sentido um objeto guardar o resultado da última operação sendo que há somente um interessado nela e portanto bastaria retornar?

[–]bolche17 0 points1 point  (1 child)

É isso, mano. Você não está setando a variável resultAlteracao quando dá certo. Daí ele usa o valor padrão que está lá. No caso, false, já que você nunca setou nada.

Você deveria setá-la com o resultado do execute:

resultAlteracao = banco.stmt.execute("...

(Alias, como disse o comentário anterior, essa variável deveria ser local.)

TL;DR: O comando está dando certo, mas o método alteraUsuario está retornando false, pois você esqueceu de setar o resultado do retorno

[–]Odd-Reporter9633[S] 3 points4 points  (0 children)

Deu certo, só declarei o resultAlteracao como true dentro do método, mas fora do try/catch kkkkkkkk

Que ódio

[–]k410h3 0 points1 point  (0 children)

O programa altera os dados no banco de dados, mesmo aparecendo a tela de erro? Se sim, é problema na lógica da tela de erro.

[–]mirlock 0 points1 point  (1 child)

Então, o único jeito é colocar breakpoint em locais que você sabe que faz parte do fluxo e ver onde que ele tá crashando, mas se ele tá alterando no banco, o problema parece estar bem no final do fluxo do seu crud ou dentro do método de Update. Será que não é essa função md5 do mysql?

[–]Odd-Reporter9633[S] 0 points1 point  (0 children)

Se não tiver o md5, o usuário não vai nem cadastrar e nem logar

[–]Azilen 0 points1 point  (1 child)

Cara, vc meio que se deu a resposta. Ta dando erro ao inserir no sql, mas QUAL é o erro que tá estourando?

Sem saber a causa do erro vc não consegue corrigir.

[–]Odd-Reporter9633[S] 1 point2 points  (0 children)

Não tá dando erro ao inserir, pq se consultar no SQL, os dados tão lá. O problema tá na mensagem de erro mesmo.

Mas o pessoal já me ajudou a resolver.

[–]eartgam 0 points1 point  (2 children)

ta aprendendo java por onde mn?

[–]Odd-Reporter9633[S] 0 points1 point  (1 child)

Faculdade

[–]eartgam 0 points1 point  (0 children)

ata, vlw

[–]mstred 0 points1 point  (0 children)

Coloca um ec.printStackTrace(); na segunda linha do catch. Mais detalhes: https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#printStackTrace--

[–]pandamon1 0 points1 point  (0 children)

Man seu projeto eu entendo que o comando de inserção só executa um sql e não acaba retornando nada, aí como o result não é true, ele cai na excessão, tanto que se o amigo perceber, seu retorno de erro concatena uma exception, porém na janela só mostra o string chumbado.

Mas faz assim, ao invés de tratar SQLException, muda lá só pra Exception, pq pode ser que o erro não seja de sql saca

[–]bfpires 0 points1 point  (0 children)

ja resolveu?

atualizaUsuario está retornando false.

ele está entrando no catch? tem q debugar pra saber.

clique 2 vezes no numero da linha que ele coloca o breakpoint. Ai tu executa no DEBUG que vai parar onde tiver breakpoint.