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.