O nome da tabela tem que ser literal, não pode ser bind variable (colocar ? e passar como parametro como você fez).
Comando SQL direto do BD
2 Respostas
Boa tarde,
Estou fazendo um sistema de controle de estoque com o MYSQL, e para otimizar o código e facilitar a manutenção estou colocando os comandos SQL em uma tabela (nomecomando, tabelaalvo e textocomando).
Recupero o o comando SQL da tabela (select * from ? where ? = ?) e incremento o mesmo utilizando o PreparedStatement
PreparedStatement ps = con.prepareStatement(tcomando);
ps.setString(1, tabalvo); ps.setString(2, campo1); ps.setString(3, valor1);
Até aqui tudo certo, porém, os valores das variáveis (tabalvo, campo1 e valor1) são incrementados no comando SQL com aspas, o que deixa o comando inválido para o MYSQL.
Comando após icremento das variáveis: com.mysql.jdbc.PreparedStatement@1027b4d: select * from 'usuarios' where 'username' = 'rodrigo'
Alguém poderia me ajudar ? OBRIGADO
Obrigado Zeh,
Substitui o nome da tabela literal e funcionou, porém, o campo1 não é encontrado e o resultado é vazio.
Tenho que colocar o campo1 também literal?
Mais uma vez obrigado!