PreparedStatement no MySQL - Problemas

PessoALL

Estou tendo problemas em utilizar o metodo PreparedStatement com o MySQL.

Eu tenho uma classe DAO que implementa o metodo criarAeroporto() como exemplo abaixo:

[code] public void criarAeroporto(Aeroporto aeroporto) throws DAOException {
//validando informações
if(aeroporto.getId() == null){
throw new DAOException(“Error : O id deve ser informado.”);
}

     try{
          // Preenchendo parametros...
          List ListaParametros = new ArrayList();

           //ID
           params = new DBQueryParams();
           params.setTipo(Types.VARCHAR);
           params.setValor(aeroporto.getId());
           ListaParametros.add(params);

           //DESCRICAO
           params = new DBQueryParams();
           params.setTipo(Types.VARCHAR);
           params.setValor(new String(aeroporto.getDescricao()));
           ListaParametros.add(params);

           query = new DBQuery();
i = query.executeUpdate(SQL_CREATE_AEROPORTO, ListaParametros);

           }catch(Exception e){
                   throw new DAOException(e.getMessage());
           }

   }

[/code]

E possui uma classe onde eu passo as minhas querys DBQuery:

[code]public ResultSet executeQuery(String sql, List params) throws Exception{
try {

           connection = DBConnection.getConnection();
                   pstmt      = connection.prepareStatement(sql);
                   pstmt.clearParameters();
                   Iterator iterator = params.iterator();

                   int x = 0;
                   while(iterator.hasNext()){
                           x++;
                           parametros = (DBQueryParams) iterator.next();
                           pstmt.setObject(x,parametros.getValor(),parametros.getTipo());
                   }

                   rs         = pstmt.executeQuery();
                   return rs;

           } catch (Exception e) {
                   throw new Exception("Error : " + e.getMessage());
           }
   }[/code]

Ao tentar executar o metodo criarAeroporto() me retorna o seguinte mensagem de erro :

[quote]
You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘? , ? )’ at line 1[/quote]

O que pode estar acontecendo ? algum problema na minha passagem de parâmetros ?

Ps: A constante SQL_CREATE_AEROPORTO foi declarada dessa maneira:

SQL_CREATE_AEROPORTO = "INSERT INTO AEROPORTO(ID,DESCRICAO) VALUES( ? , ? )"

Sds.

Pergunta nao relacionada, mas extremamente importante: voce nao fecha os seus resultsets, statements ou connections nunca?

Infelizmente não havia pensado nessa parte, me envolvi nesse probema que acabei esquecendo do resto. :oops:

Somente por desencargo de consciencia, mude a chamada a

pstmt.setObject(x,parametros.getValor(),parametros.getTipo());

Para a implementacao correta, como setInt() e setString(), e teste.

Rafael

[quote=Rafael Steil]Somente por desencargo de consciencia, mude a chamada a

pstmt.setObject(x,parametros.getValor(),parametros.getTipo());

Para a implementacao correta, como setInt() e setString(), e teste.

Rafael[/quote]

Eu estou fazendo a modificação do meu preparedStatement utilizando os SetXXX. Eu havia criada uma classe que montava os parametros utilizando o setObject(), mas vou fazer a query na minha classe DAO mesmo.