Erro SQL Server 2000: invalid parameter binding

Olá pessoal!!

Estou com problema na execução de um metodo para alterar dados.

Quando tento alterar da a seguinte mensagem (to usando SQL Server 2000)

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).

A classe é essa aqui. Verifiquei os parametros mas nao vejo incoerencia.
Obrigado!!

public boolean alterarpac(String endereco,
String localidade, String municipio, String nomemae, String nomepai, String rg,
String complemento) throws SQLException {
try{
String sql = “UPDATE paciente set”+
“endereco=?,” +
“localidade=?,” +
“municipio=?,” +
“nomemae=?,” +
“nomepai=?,” +
“rg=?,complemento=? WHERE nome =?”;
PreparedStatement ps = this.con.prepareStatement(sql);
ps.setString(1, endereco);
ps.setString(2, localidade);
ps.setString(3, municipio);
ps.setString(4, nomemae);
ps.setString(5, nomepai);
ps.setString(6, rg);
ps.setString(7, complemento);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, “Paciente alterado com sucesso!”);
ps.close();
return true;
} catch (SQLException e) {
System.out.println("Erro: "+e);
JOptionPane.showMessageDialog(null, “Erro na alteração dos dados!”, “Mensagem do Programa”, JOptionPane.ERROR_MESSAGE);
return false;
}
}

Use a tag CODE para exibir o seu código.

public boolean alterarpac(String endereco, 
String localidade, String municipio, String nomemae, String nomepai, String rg, 
String complemento) throws SQLException { 
try{ 
String sql = "UPDATE paciente set"+ 
"endereco=?," + 
"localidade=?," + 
"municipio=?," + 
"nomemae=?," + 
"nomepai=?," + 
"rg=?,complemento=? WHERE nome =?"; 
PreparedStatement ps = this.con.prepareStatement(sql); 
ps.setString(1, endereco); 
ps.setString(2, localidade); 
ps.setString(3, municipio); 
ps.setString(4, nomemae); 
ps.setString(5, nomepai); 
ps.setString(6, rg); 
ps.setString(7, complemento); 
ps.executeUpdate(); 
JOptionPane.showMessageDialog(null, "Paciente alterado com sucesso!"); 
ps.close(); 
return true; 
} catch (SQLException e) { 
System.out.println("Erro: "+e); 
JOptionPane.showMessageDialog(null, "Erro na alteração dos dados!", "Mensagem do Programa", JOptionPane.ERROR_MESSAGE); 
return false; 
} 
} 

na linha 6 coloque um espaço antes de endereço

" endereco=?," + 

está faltando o parâmetro 8

ps.setString(8, nome); 

Mais atenção amigo! Você precisa passar 8 parâmetros mas só contei 7.

Putz…vou fazer as correções e qualquer coisa aviso.

Obrigado!! :?

Bom…funcionou em partes

O codigo aparentemente esta funcionando.
Porem, nao consigo alterar os registros por ele. O metodo roda normalmente mas sem nada de errado, nenhuma mensagem.
Só consigo fazer o update colocando o comando no Query Analyzer.

O que pode estar errado? O catch nao esta me retornando nenhuma irregularidade.
Valeu!!

Veja como funcionam transações (Commit, Rollback etc.) no seu banco.
Não sei se, com o driver usado (que é o da Microsoft), as conexões são “auto-commit” por default ou não.
Para saber o que é isso, pergunte a um colega seu mais experimentado.