Você não pode setar nomes de colunas em um PreparedStatement. Você só pode setar valores.
(A razão é que um PreparedStatement na verdade é uma forma de dar uma instrução ao banco de dados para otimizar a query SQL, passando apenas os novos valores de parâmetros e possibilitando a pré-compilação.
Entretanto, pré-compilação, em qualquer banco SQL, supõe que os nomes das colunas sejam fixos, e você só altere valores. )
No seu caso você teria de montar a string SQL com os nomes das colunas desejadas.
M
marceloplis
thingol:
Você não pode setar nomes de colunas em um PreparedStatement. Você só pode setar valores.
(A razão é que um PreparedStatement na verdade é uma forma de dar uma instrução ao banco de dados para otimizar a query SQL, passando apenas os novos valores de parâmetros e possibilitando a pré-compilação.
Entretanto, pré-compilação, em qualquer banco SQL, supõe que os nomes das colunas sejam fixos, e você só altere valores. )
No seu caso você teria de montar a string SQL com os nomes das colunas desejadas.
Qual seria a solução para eu ter esta funcionalidade de ordenar de acordo com o campo desejado ??
Grato.
T
thingol
Solução porca e rápida:
sql=cnct.conn.prepareStatement("SELECT id, vencimento, usuario FROM tabela ORDER BY "+parametro);
É claro que você provavelmente vai usar uma cláusula WHERE para não puxar dados demais do banco, não?
M
marceloplis
thingol:
Solução porca e rápida:
sql=cnct.conn.prepareStatement("SELECT id, vencimento, usuario FROM tabela ORDER BY "+parametro);
É claro que você provavelmente vai usar uma cláusula WHERE para não puxar dados demais do banco, não?
Sim, usarei Where, este foi só pra exemplificar.
Mas se eu fizer assim vou perder a otimização do SQL ficar pré compilado após executado pela primeira vez ?? Isto acarretará em algum problema, tipo perca de desempenho ??
VAlew.
T
thingol
“Perca” é o nome de um peixe
De qualquer maneira, depende um pouco de seu banco.
Muitos bancos costumam ter internamente um pool de expressões SQL pré-compiladas, então se você solicitar um relatório por vencimento e um pouco depois um outro relatório por vencimento, então ele já terá a expressão pré-compilada.