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

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.

Tente fazer da seguinte maneira:

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

1 curtida

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 ?

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

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!

1 curtida

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() +"%' ";
1 curtida

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…