Erro no UPDATE com campos VARCHAR ( mysql) (RESOLVIDO)

6 respostas
L

Boa tarde.
Gente estou com um erro, que talvez seja até um erro bobo, mas não estou localizando solução.

meu UPDATE:

String sql = "UPDATE ITENS SET ESTOQUE = ESTOQUE + '" + estoqueatual + "' WHERE COD_ITEM LIKE " + tf_COD_ITEM.getText();

1- Se o valor do ‘tf_COD_ITEM.getText()’ for somente numero, ele executa.
2-se o valor do ‘tf_COD_ITEM.getText()’ for numero e letras, pois há codigos com numeros e letras, ele nao faz o update.

O campo no Banco de dados é varchar para ambas as tabelas.

Há muito tempo que nao entro no forum e estou perdido com os macetes de formatacao para expor as duvidas aqui…

Andei lendo que o Mysql faz uma conversao do campo vindo do banco ( (quando ele compara, no meu caso os códigos, etc)… Mas tentei N formas e nao consegui ainda…
Aguardo as dicas.

6 Respostas

Jonathan_Medeiros

Tente fazer da seguinte maneira:

String sql = " UPDATE ITENS SET ESTOQUE = ESTOQUE + '" + estoqueatual + "' WHERE COD_ITEM LIKE '" + tf_COD_ITEM.getText() +"' ";

A

Pelo sintoma que descreve, deve ser o caso de no banco o COD_ITEM estar com letras maíusculas e no tf_COD_ITEM.getText() estar vindo minúsculas (ou o contrário). Pra resolver isso, você pode usar:

tf_COD_ITEM.getText().toUpperCase()

e no comando update:

... WHERE upper(cod_item) ...

Agora, uma outra coisa que vale comentar… se você usa o LIKE, vai ocorrer o update em registros que sejam iguais ou parecidos com o COD_ITEM que estiver passando. É isso mesmo o que pretendes ?

L

Ademiltonjic, criei um metodo que todos os campos ficam Uppercase…

L

Jonathan, seu Genius… rsrsrsr
Deu certinho amigo…
Estou ha dias procurando solução.
Achei que era direto no BD, mas sua dica matou a pau…

Muito Obrigado!

A

Então você tem garantia que tudo que está no banco está em maiusculas, é isso ?

Bom, na resposta do Jonathan_Medeiros faltou um detalhezinho… o comando precisa incluir o curinga % para funcionar com like. Seria isso:

String sql = " UPDATE ITENS SET ESTOQUE = ESTOQUE + '" + estoqueatual + "' WHERE COD_ITEM 
LIKE '%" + tf_COD_ITEM.getText() +"%' ";
L

Sim, vai tudo pro banco como maiusculas.
Testei a sua forma e deu certo tbm…
De toda forma tambem vou anotar sua dica aqui…
Agradecido…

Criado 5 de julho de 2017
Ultima resposta 5 de jul. de 2017
Respostas 6
Participantes 3