Problema com PreparedStatement

Pessoal,

trabalho com PS tem uma cara ja, tenho uma porrada de DAO e agora nessa merd4 aqui ta dando um erro q ja li e reli o codigo 100000000 de vezes e nao axo nada…

StringBuffer sql = new StringBuffer();
					
sql.append( " SELECT * FROM RCR_PESQUISA_REG_CRIMINAL " );
sql.append( " WHERE DT_MENSAGEM = ? AND LOGIN_USUARIO = ?" );
				
PreparedStatement stmt = localConnection.prepareCall( sql.toString() );
				
stmt.setDate(1, rs.getDate("DT_MENSAGEM")); // ***ERRO
stmt.setString(2, rs.getString("LOGIN_USUARIO"));

org.firebirdsql.jdbc.FBSQLException: You cannot set value of an non-existing parameter.

O erro nao esta no rs.getDate(“DT_MENSAGEM”)… ja conferi centenas de vezes no Debug e ta la a data certinha, e o login do cara tb… parece q ele nao ta enxergando os parametros (?) da PS…

eu sei que o código parece confuso , mas é pq ele usa dados de um ResultSet anterior, pra passar os parametros pra proxima consulta…

Tem uma engano ai:

 PreparedStatement stmt = localConnection.prepareCall( sql.toString() );

o metodo prepareCall() é para executar um SP no banco de dados e vc nao está fazendo isso, o prepareCall() lhe retorna um objeto CallableStatement e não PrepareStatement

O certo:

PreparedStatement stmt = localConnection.prepareStatement(sql.toString());

mano, que mancada minha :oops:

tem uma mistureba de PreparedStatement com CallableStatemente aqui pq usa StoredProcedures do Oracle… acabei viajando nisso ae…

vlw mesmo