Erro SQL Server 2000: invalid parameter binding

5 respostas
B

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;

}

}

5 Respostas

P

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);
T

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

B

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

Obrigado!! :?

B

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!!

T

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.

Criado 14 de agosto de 2009
Ultima resposta 19 de ago. de 2009
Respostas 5
Participantes 3