Problema com PreparedStatement

3 respostas
fabim

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…

3 Respostas

fabim

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

ramilani12

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());
fabim

mano, que mancada minha :oops:

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

vlw mesmo

Criado 16 de fevereiro de 2007
Ultima resposta 22 de fev. de 2007
Respostas 3
Participantes 2