Onde estou errando?

7 respostas
G

Rapeize, preciso fazer uma alteração qualquer (num cadastro de clientes) em minhas tabelas e não sei se minha classe DAO está correta no que diz respeito a update.

private void _mountQueries() {
		QUERY_INSERT = "insert into " + tabName
				+ " (datacadastro, codigo, nome, endereco, complemento, telefone, cep, bairro, cidade, estado, rg, cpf) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		QUERY_UPDATE = "update  " + tabName + " set datacadastro=?, nome=?, endereco=?, complemento=?, telefone=?, cep=?, bairro=?, cidade=?, estado=?, rg=?, cpf=? where codigo=?";
		QUERY_EXCLUI = "delete from  " + tabName + "  where codigo=?";
		QUERY_SELECT_BY_EXAMPLE = "select * from  " + tabName
				+ "  where codigo=?";
		QUERY_SELECT_ONE_BY_ID = "select * from  " + tabName + "  where codigo=?";
		QUERY_SELECT_ALL = "select * from  " + tabName + " order by codigo ";
		QUERY_SELECT_MAX_ID = "select max(id) as maxid from " + tabName;
	}

Minha classe para atualização esta assim :

public boolean updatePersistent(Cliente f) throws DAOException {
		try {
			getPreparedStatement(QUERY_UPDATE);
			ps.setString(1, f.getDataCadastro());
			ps.setString(2, f.getCodigo());
			ps.setString(3, f.getNome());
			ps.setString(4, f.getEndereco());
			ps.setString(5, f.getComplemento());
			ps.setString(6, f.getTelefone());
			ps.setString(6, f.getCep());
			ps.setString(7, f.getBairro());
			ps.setString(8, f.getCidade());
			ps.setString(9, f.getEstado());
			ps.setString(10, f.getRg());
			ps.setString(11, f.getCpf());
			int ok = ps.executeUpdate();

			closePreparedStatement();

			if (ok == 0) {
				return false;
			} else {
				return true;
			}
		} catch (SQLException ex) {
			throw new DAOException("SQL exception in updatePersistent" + f, ex);
		}
	}

Só que qdo atualizo algum dado no programa e clico em salvar, me aparece o seguinte:

SQL exception in updatePersistentmodelo.Cliente@18385e3 at modelo.ClienteDAO.updatePersistent(ClienteDAO.java:106) at modelo.ModelCliente.alteraAluno(ModelCliente.java:64) at controle.ControleClientes.actionPerformed(ControleClientes.java:79)
Acredito que seja a forma como foi escrito a query update, alguém aí sabe como resolver isso ??? :?

7 Respostas

B

Cara,

Oque da para entender é, que a ordem que você passa os parametros esta diferente.

Veja a ordem que eles aparecem em seu Statment, e a ordem que você os seta.

Arrume isso e verifique se todos os tipos também estão corretos, pelo que vi ai é tudo String???

Abs,

Bruno Tafarelo

V

Opa…

Além da ordem que está diferente, verifique a quantidade de parametros… no seu update contei 12 parametros… e veja que vc está passando 11…

abraços…

shoko

ps.setString(6, f.getTelefone()); ps.setString(6, f.getCep());

está correta essa parte???

hugofcampos

O shoko tem razão. Você acabou setando duas vezes o parametro 6 e, por isso, tá faltando o décimo segundo.
Conserta e veja se não há mais problemas fora este.
Até!

shoko

na verdade o que irá acontecer é que ira sobrescrever o coringa 6 porém como ele utilizou 12 coringas na query SQL e só setou valores para 11 vai dar erro.

G

Rapeize, blz não ta mais dando erro.
Mas tb não altera no banco. Não entendi nada. :?:

U

Cara, imprima o stackTrace do SQL Exception antes de lançar a sua excessão…
Ajuda! :wink:

[]s

Criado 26 de junho de 2008
Ultima resposta 26 de jun. de 2008
Respostas 7
Participantes 6