Bom tenho o seguinte preparedStatement com algumas Strings concatenadas, com a intenção de gerar um gráfico com o valor de retorno do banco. Só que pra essa sintaxe so tenho um grafico vazio. Então testei o mesmo código so que mudei a consulta para conteudo estático, ou seja sem nenhuma string concatenada e funcionou perfeitamente. O erro so pode ser nessa parte…
Ja utilizei o formato abixo e também deu errado:
[code]“SELECT valor, HOUR(hora) FROM ?, carga WHERE carga.nome= ? AND carga.autocod= ?.carga AND data=? AND hora BETWEEN ‘00:00:00’ AND ‘23:59:59’ AND carga.fase=‘A’ GROUP BY fase, HOUR(hora)”
Em um PreparedStatement, você só pode usar interrogações ao invés de valores de alguma expressão (como numa atribuição ou comparação com um campo de uma tabela). Você tá usando uma interrogação no nome da tabela. Tente concatenando o nome da tabela e usando ? no resto dos campos.
E outra coisa: é bom você usar um objeto Date para setar a data em um PreparedStatement, porque ele formata o objeto pra você. Nesse seu código, você teve o trabalho de formatar a String para o formato desse banco de dados que você usa. Se você mudar de banco, o formato pode ser outro e você vai ter trabalho extra.
Realmente CD1, sua dica foi certissima, o códico ficou assim:
[code]PreparedStatement Consulta = conn.prepareStatement(“SELECT valor, HOUR(hora) FROM “+Local+”, carga WHERE carga.nome=? AND carga.autocod=”+Local+".carga AND data=? AND hora BETWEEN ‘00:00:00’ AND ‘23:59:59’ AND carga.fase=‘A’ GROUP BY HOUR(hora)");
Parece que em um PreparedStatement somente o nome da tabela pode ser uma String concatenada, o demais somente no esquema de enviar a String.
A quanto ao for da data eu ja trato ela dentro do meu JSP de uam forma que rode certo dentro do MySQL, mas foi uma boa sugestão depois vou dar uma olhada, nessa possivel mudança de Banco de dados. Teria que envolver o famigerado Gregory Calendar?
Obrigado pela ajuda ai!