Problemas para inserir um cadastro no banco de dados postgresql

Oi, pessoal tudo bem com vcs?

Estou desenvolvendo um projeto utilizando o banco de dados postgresql e estou com um pequeno problema, tenho um método para inserir dados no postgre. Também tenho outro método para pesquisar os dados informados para ver se o mesmo já não foi cadastrado.

   public Funcionario acharFuncionario(String codigo)throws ConexaoErroException, SQLException{
       String query = "Select codigo, nome, rua, cidade, bairro, uf, cep, rg from funcionario where codigo = '?' and estatus = '1'";
       PreparedStatement smt = con.prepareStatement(query);//a variável con é do tipo Connection do pacote java.sql.Connection.
       
       try{
              smt.setString(1, codigo);//no código sql acima o campo código é o primeiro, aqui estou setando o valor para a pesquisa, se o campo codigo estivesse em qualquer ordem ele dá o mesmo erro diz que ele está fora do intervalo.
              
              ResultSet set = smt.executeQuery();

             if(set.next()){
                    funcionario = new Funcionario();
                    funcionario.setCodigo(set.getString("codigo"));
                     ...
                      ...
                     ...
      
             }
       }catch(SQLException ex){
       }

   }//Método para achar os dados do funcionário para checar se o mesmo já está cadastrado.

  public void inserirFuncionario(Funcionario funcionario)throws ConexaoErroException, SQLException{
      String query = "Insert into funcionario (codigo, ...) Values('?', ...)";
      PreparedStatement smt = con.prepareStatement(query);

       try{
           smt.setString(1, funcionario.getCodigo());
           ...
           ...
           ...
       }catch(SQLException ex){
            throw new ConexaoErroException("Erro");
       }
  }

O problema é que fica dando o erro dizendo que o índice está fora do intervalo, não importa o valor que eu coloque, dá sempre o mesmo erro, no método de acharFuncionario.
Na instrução sql pelo menos no banco eu tinha que colocar as simples nos valores, aqui eu tive que fazer a mesma coisa.