Pessoal,
Eu estou fazendo uma query diretamente no meu programa e estou usando o PreparedStatement e ResultSet para fazer o que eu preciso (a query no banco de dados e trabalhar com os resultados da mesma, montando um arquivo de saída).
Nesta minha query, na condição WHERE, passo alguns parametros e coloco no resultado dos parametros o ? para passar os valores pelo PreparedStatement. Esses parametros, os dois primeiros são datas e os outros são valores de um JList que eu jogo um array e trabalho com ele.
Se eu não passo nenhum valor no JList, ele faz a query normalmente; se eu passo um valor no JList, ele usa este valor para a query, quando vai executar dá o seguinte erro:
ORA-01006: bind variable does not exist
Segue abaixo o código até a parte da execução da query:query =
conn.prepareStatement("SELECT NUMERO, "
+ "TIPO, PROBLEMA, ABERTO_POR, "
+ "TO_CHAR(TO_DATE('01/01/1970 00:00:00','DD/MM/YYYY HH24:MI:SS') + ((DATA - 10800) / (60 * 60 * 24)), 'DD/MM/YYYY HH24:MI:SS') as DATA, "
+ "STATUS "
+ "FROM SCHEMA.TABELA WHERE DT >= ? AND DT <= ? "
+ abertoPor.toString());
query.setLong(1, dataInicialSegundos);
query.setLong(2, dataFinalSegundos);
int index = 3;
for (int i = 0; i < array.length; i++) {
query.setString(index, array[i].toString());
index++;
}
ResultSet resultado = query.executeQuery();
String abertoPor = new String();
for (int i = 0; i < array.length; i++) {
if (i == 0)
abertoPor = "AND (ABERTO_POR = '?'";
if (i > 0)
abertoPor = abertoPor + " OR ABERTO_POR = '?'";
}
if (array.length != 0)
abertoPor = abertoPor + ")";
A Data é gravada no banco de dados em segundos.
O banco de dados é o Oracle 8i.
Será que alguém tem alguma solução ? :cry:
Obrigado. :wink:


