Campo Serial no PostregSql

2 respostas
G

Senhores boa tarde, venho mais uma vez solicitar ajuda. Tenho um campo na minha tabela de clientes que é do tipo serial(sei que a mesma é autoincremento). Minha classe esta da seguinte forma:

private void _mountQueries() {
		QUERY_INSERT = "insert into " + tabName
				+ " (datacadastro, nome, endereco, complemento, telefone, cep, bairro, cidade, estado, rg, cpf) values (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		QUERY_UPDATE = "update  " + tabName + " set datacadastro=?, codigo=?, nome=?, endereco=?, complemento=?, telefone=?, cep=?, bairro=?, cidade=?, estado=?, rg=? where cpf=?";
		QUERY_EXCLUI = "delete from  " + tabName + "  where codigo=?";
		QUERY_SELECT_BY_EXAMPLE = "select * from  " + tabName
				+ "  where cpf=?";
		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;
	}

e:

public Cliente makePersistent(Cliente f) throws DAOException {
		int ok;
		Tela1_Clientes tela = new Tela1_Clientes();
		System.out.println("Dentro do método makePersistent");
		try {
			getPreparedStatement(QUERY_INSERT);
			System.out.println("Dentro do try do método makePersistent");
			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(7, f.getCep());//feita
			ps.setString(8, f.getBairro());
			ps.setString(9, f.getCidade());
			ps.setString(10, f.getEstado());
			ps.setString(11, f.getRg());
			ps.setString(12, f.getCpf());
			ok = ps.executeUpdate();
			closePreparedStatement();
			JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso");
			return f;
		} catch (SQLException ex) {
			throw new DAOException("SQL exception in makePersistent:" + f, ex);
		}
	}

quando rodo o programa e clico em salvar, o eclipse me passa a seguinte mensagem:

Clientes
v1=abrindo banco: AutoCenter
xxx4
Dentro do método makePersistent
v1=abrindo banco: AutoCenter
Dentro do try do método makePersistent
DAOGenerics.DAOException: SQL exception in makePersistent:modelo.Cliente@1662dc8
	at modelo.ClienteDAO.makePersistent(ClienteDAO.java:77)
	at modelo.ModelCliente.incluiCliente(ModelCliente.java:50)
	at controle.ControleClientes.actionPerformed(ControleClientes.java:105)

Não to entendendo, o problema é na query ??? Não é para omitir o campo que é serial??? Se não o como faço para inserir corretamente ?? :?:

2 Respostas

Preco

A numeração ali é pro prepareStatement colocar no lugar dos placeholders (os “?”)… Se vc quer omitir o código, teria que ser algo como

ps.setString(1, f.getDataCadastro());
ps.setString(2, f.getNome());
ps.setString(3, f.getEndereco());
ps.setString(4, f.getComplemento());
ps.setString(5, f.getTelefone());
ps.setString(6, f.getCep());//feita
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());
ok = ps.executeUpdate();

Testa e diz se funcionou… Se não for isso, vamo tentar de novo =P

[]'s

G

Irmão, funcionou… Porém no meu banco o campo codigo começou com 2 e não com 1. Por acaso vc saberia dizer pq ???

Criado 2 de julho de 2008
Ultima resposta 2 de jul. de 2008
Respostas 2
Participantes 2