Galera estou tentando executar um UPDATE e me da o seguinte erro: SQLException: ORA-01008: not all variables bound
ORA-01008 nem todas as variáveis são limitadas
alguém já pegou esse erro ?
abaixo segue meu metodo.
public void updateCliente(ClienteTO clienteTO) throws Exception {
String sql = "update cadcliente set CODIGOCLI =?, NOME =?, ENDERECO =?, RG =?, CPF =?, TELFIXO =?," +
"CEL=?, BAIRRO =?, datanascimento =?, numero =?, complemento= ?, email =? where CODIGOCLI =?)";
try {
PreparedStatement pstm = getConnection().prepareStatement(sql);
pstm.setString(1, clienteTO.getCodigocli());
pstm.setString(2, clienteTO.getNome());
pstm.setString(3, clienteTO.getEndereco());
pstm.setString(4, clienteTO.getRg());
pstm.setString(5, clienteTO.getCpf());
pstm.setString(6, clienteTO.getTelfixo());
pstm.setString(7, clienteTO.getCel());
pstm.setString(8, clienteTO.getBairro());
pstm.setDate(9, clienteTO.getDataNascimentoDate());
pstm.setString(10, clienteTO.getNumero());
pstm.setString(11, clienteTO.getComplemento());
pstm.setString(12, clienteTO.getEmail());
pstm.executeUpdate();
pstm.close();
} catch (Exception ex) {
System.out.println("Erro: " + ex);
System.err.println("Erro: " + ex);
throw new Exception(ex);
}
conta qtas interrogações tem no seu sql e conta qtos parâmetros vc setou… :?
yorgan
#3
faltou você setar o CODIGOCLI.
[]´s
então acho que esta setado olha só ai
public void updateCliente(ClienteTO clienteTO) throws Exception {
String sql = "update cadcliente set CODIGOCLI =?, NOME =?, ENDERECO =?, RG =?, CPF =?, TELFIXO =?," +
"CEL=?, BAIRRO =?, datanascimento =?, numero =?, complemento= ?, email =? where CODIGOCLI)";
try {
PreparedStatement pstm = getConnection().prepareStatement(sql);
pstm.setString(1, clienteTO.getCodigocli());
pstm.setString(2, clienteTO.getNome());
pstm.setString(3, clienteTO.getEndereco());
pstm.setString(4, clienteTO.getRg());
pstm.setString(5, clienteTO.getCpf());
pstm.setString(6, clienteTO.getTelfixo());
pstm.setString(7, clienteTO.getCel());
pstm.setString(8, clienteTO.getBairro());
pstm.setDate(9, clienteTO.getDataNascimentoDate());
pstm.setString(10, clienteTO.getNumero());
pstm.setString(11, clienteTO.getComplemento());
pstm.setString(12, clienteTO.getEmail());
pstm.executeUpdate();
pstm.close();
} catch (Exception ex) {
System.out.println("Erro: " + ex);
System.err.println("Erro: " + ex);
throw new Exception(ex);
}
eu tirei a ultima interrogação where CODIGOCLI mai não funcionou
Tente assim:
# public void updateCliente(ClienteTO clienteTO) throws Exception {
#
#
# String sql = "update cadcliente set CODIGOCLI =?, NOME =?, ENDERECO =?, RG =?, CPF =?, TELFIXO =?," +
# "CEL=?, BAIRRO =?, datanascimento =?, numero =?, complemento= ?, email =? where CODIGOCLI =?)";
#
# try {
# PreparedStatement pstm = getConnection().prepareStatement(sql);
# pstm.setString(1, clienteTO.getCodigocli());
# pstm.setString(2, clienteTO.getNome());
# pstm.setString(3, clienteTO.getEndereco());
# pstm.setString(4, clienteTO.getRg());
# pstm.setString(5, clienteTO.getCpf());
# pstm.setString(6, clienteTO.getTelfixo());
# pstm.setString(7, clienteTO.getCel());
# pstm.setString(8, clienteTO.getBairro());
# pstm.setDate(9, clienteTO.getDataNascimentoDate());
# pstm.setString(10, clienteTO.getNumero());
# pstm.setString(11, clienteTO.getComplemento());
# pstm.setString(12, clienteTO.getEmail());
[/code]
[b] pstm.setString(13, clienteTO.getCodigocli());[/b]
[code]
# pstm.executeUpdate();
# pstm.close();
#
# } catch (Exception ex) {
# System.out.println("Erro: " + ex);
# System.err.println("Erro: " + ex);
# throw new Exception(ex);
#
# }
você tem 13 pontos de interrogação e só 12 parâmetros.
Este é o problema.
[]'s
ta faltando um parametro meu amigo.
Fiz as alterações das interrogações e parametros mais ainda esta dando o erro
public void updateCliente(ClienteTO clienteTO) throws Exception {
String sql = "update cadcliente set CODIGOCLI =?, NOME =?, ENDERECO =?, RG =?, CPF =?, TELFIXO =?," +
"CEL=?, BAIRRO =?, datanascimento =?, numero =?, complemento= ?, email =? where CODIGOCLI=?)";
try {
PreparedStatement pstm = getConnection().prepareStatement(sql);
pstm.setString(1, clienteTO.getCodigocli());
pstm.setString(2, clienteTO.getNome());
pstm.setString(3, clienteTO.getEndereco());
pstm.setString(4, clienteTO.getRg());
pstm.setString(5, clienteTO.getCpf());
pstm.setString(6, clienteTO.getTelfixo());
pstm.setString(7, clienteTO.getCel());
pstm.setString(8, clienteTO.getBairro());
pstm.setDate(9, clienteTO.getDataNascimentoDate());
pstm.setString(10, clienteTO.getNumero());
pstm.setString(11, clienteTO.getComplemento());
pstm.setString(12, clienteTO.getEmail());
pstm.setString(13, clienteTO.getCodigocli());
pstm.executeUpdate();
pstm.close();
} catch (Exception ex) {
System.out.println("Erro: " + ex);
System.err.println("Erro: " + ex);
throw new Exception(ex);
}
WTGA
#9
Não sei se tem a ver com o erro. Mas você está fazendo:
update cadcliente set CODIGOCLI =? …
e depois:
where CODIGOCLI=?
Não é necessário fazer o set CODIGOCLI =?
WTGA
#10
Você tem que fazer pstm.executeUpdate(sql);
Galera estava errado isso ai no meu codigo estava fechando um parenteses que não tinha aberto valeu a todos
where CODIGOCLI=?)"; <—