SQLException:[Microsoft][SQLServer JDBC Driver]

Pessoal,
estou fazendo uma conexão jdbc com drivers nativos pra sql server 2000.
quando tento inserir meus dados ocorre a seguinte exception:

SQLException: [Microsoft][SQLServer JDBC Driver]Invalid parameter binding(s).
SQLState: 07009
VendorError: 0

O código que gera o erro é o seguinte:

int indice = 1;
Iterator it = mapContatos.values().iterator();
   while (it.hasNext()){
      Contato contato = (Contato)it.next();
      PreparedStatement pstmt = con.prepareStatement("INSERT INTO
     CONTATO ( id_contato,id_agenda,nome,telefone,bairro ) VALUES  
     ( ?,?,?,?,? )");
     pstmt.setInt(indice,contato.getId().intValue());
     indice++;	
     pstmt.setInt(indice,1);	
     indice++;
     pstmt.setString(indice,contato.getNome());
     indice++;
     pstmt.setString(indice,contato.getTelefone());
     indice++;
     pstmt.setString(indice,contato.getBairro());
     indice++;
     pstmt.executeUpdate();
     pstmt.close();
   }

Eu sei que o código está feio, mas como meu objetivo é o aprendizado, se ele funcionar tá de bom tamanho, por enqunato.
Alguém sabe qual a besteira que eu estou fazendo? (e não vale dizer q é usar o JDBC ao invés de framework…) 8)

Pessoal,
primeiro eu coloquei a variável indice dentro do while,pra não estrapolar o índice das 5 colunas, mas mesmo assim não funcionou.
Então eu troquei a variável indice por números 1,2,…5 e então funcionou corretamente.
Alguém sabe me dizer porque eu não posso usar uma variável para representar o índice das colunas?

while (it.hasNext())

No primeiro laço isso funciona bem, mas no segundo laço, sua variavel ‘indice’ vai ter os valores errados
6
7
8
9
10

:smiley:

Coloque indice = 1 no final no laço while que acredito funcionar bem