Pstmt.setString so funciona depois do =?

3 respostas
Rage

Boa tarde.

Estou tendo uma dúvida com o PreparedStatement, que é a seguinte:

O recurso de usar pontos de interrogação na query para posteriormente substituí-los por valores só funciona após o sinal de igualdade na query?
Exemplo: o código a seguir funciona:

String query = "UPDATE user.tablex SET campo1 = ?, campo2 = ?, campo3 = ? WHERE chave = ?"

Ok.

Porém, eu gostaria de fazer da seguinte maneira:

String query = "UPDATE user.tablex SET ? = ?, ? = ?, ? = ? WHERE ? = ?"

E aí, além de passar os valores a serem atualizados, eu passaria inclusive quais campos eu desejo atualizar.
Venho fazendo isso sem sucesso, dá erro e parece q ele nao substitui as interrogações que não estão após um sinal de igualdade/atribuição =.

O que eu quero evitar é justamente o que estou sendo obrigado a fazer:

String query = "UPDATE user.tablex SET "+ var1 +" = ?, "+ var2 +" = ?, "+ var3 +" = ? WHERE chave = ?"

Pois assim fica bagunçado e ruim de ler, entende?

Agradeço alguma ajuda
Vlw[]´s

3 Respostas

marciosantri

Creio que as interrogações só sirvam para substituir valores, e não sintaxe como vc pretende (um campo curinga, por exemplo).
Acho o que vc está querendo da forma que está querendo não vai funcionar.

Uma dúvida: suas colunas são dinâmicas a ponto de não saber qual coluna será atualizada?

Rage

Na verdade eu tenho vários métodos que vão chamar este outro de atualização, e a quantidade de campos é idêntica, pois a operação é similar, porém para entidades diferentes.
Não faz sentido sair repetindo este método para cada operação, quando que posso torná-lo dinâmico.
Ele já está funcionando, da velha maneira que descreví anteriormente, eu queria era um jeito de deixá-lo mais limpo…
Vlw[]´s!

Pedrosa

Veja se isso pode te ajudar:

http://www.guj.com.br/java.tutorial.artigo.115.1.guj

Criado 23 de agosto de 2007
Ultima resposta 24 de ago. de 2007
Respostas 3
Participantes 3