Alguem ajuda com esse erro?
estou querendo jogar o cliente recem inserido em jtextfields mas quando busco o código dele acontece esse erro:
Retorno de chaves geradas automaticamente não é suportado
Obrigado.
Alguem ajuda com esse erro?
estou querendo jogar o cliente recem inserido em jtextfields mas quando busco o código dele acontece esse erro:
Retorno de chaves geradas automaticamente não é suportado
Obrigado.
Como você busca?
/**
* Grava ou Altera um fornecedor
* @param fornecedor
* @return se conseguiu gravar/alterar retorna true
*/
public Integer gravar(Fornecedor fornecedor)
{
String sql = null;
Connection conn = null;
PreparedStatement stmt = null;
Util converte = new Util();
ResultSet result = null;
Integer codigoFornecedor = null;
try
{
conn = Conexao.criarConexao();
// Se Codigo for igual á ZERO então grava Dado
if(fornecedor.getCodigo() == 0)
{
//JOptionPane.showMessageDialog(null, converte.converteDataEmString(fornecedor.getDataCadastro()));
sql = "INSERT INTO fornecedor (dataCadastro, nome, cnpj, "
+ "rua, bairro, cidade, uf, cep, telefone, email, contato, ativo)"
+ " VALUES ('" + fornecedor.getDataCadastro() + "', '" +fornecedor.getNomeFantasia()+ "', '" +fornecedor.getCnpj()+ "', '" +fornecedor.getRua()+ "', '"
+fornecedor.getBairro()+ "', '" +fornecedor.getCidade()+ "', '" +fornecedor.getEstado()+
"', '" +fornecedor.getCep()+ "', '" +fornecedor.getTelefone()+ "', '"
+fornecedor.getEmail()+ "', '" +fornecedor.getContato()+ "', '" + fornecedor.getAtivo() + "')";
}
else // Se nnão for igual a ZERO então altera dado
{
sql = "UPDATE fornecedor SET nome = '" +fornecedor.getNomeFantasia()+ "', cnpj = '"
+ fornecedor.getCnpj() + "', rua = '" + fornecedor.getRua() + "', bairro = '" + fornecedor.getBairro() + "', cidade = '"
+ fornecedor.getCidade() + "', uf = '" + fornecedor.getEstado() + "', cep = '"
+ fornecedor.getCep() + "', telefone = '" + fornecedor.getTelefone() + "', email = '"
+ fornecedor.getEmail() + "', contato = '" + fornecedor.getContato() + "', ativo = '" +fornecedor.getAtivo()+ "' WHERE codigo = '"
+ fornecedor.getCodigo() + "'";
}
//stmt = conn.prepareStatement(sql); // Cria ligação entre a aplicação e o banco de dados
//ResultSet result = stmt.executeQuery(sql); // Executa uma atualização no banco de dados ( SQL )
stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.executeUpdate();
result = stmt.getGeneratedKeys();
if(result.next())
codigoFornecedor = result.getInt(1);
JOptionPane.showMessageDialog(null, "" +codigoFornecedor);
}
catch(SQLException gravar) // Se algo deu errado então imprima
{
JOptionPane.showMessageDialog(null, "Não foi Possivel GRAVAR/ALTERAR os dados: (" + sql + ") Erro:" + gravar);
}
finally
{
Conexao.fecharConexao(conn, stmt, null); // Fecha Conexão com banco de dados(conn) é Statement (stmt)
}
return codigoFornecedor;
}
Faltou passar o ID? ou não tem?
ID é serial not null
somente no banco , mas… quero que retorne ele
ID é serial not nullAté onde eu sei o postgres funciona com sequence. Como a própria mensagem de erro disse, não existe geração automática de ID.somente no banco , mas… quero que retorne ele
Procure no google como utilizar sequence do postgres.
Solucionei o problema…
Versão do meu postgres: postgresql-9.1.4-1-windows
Versão do driver que baixei: postgresql-9.2-1002.jdbc4
estes dois juntos funciona eu estava com um driver 9.1.1000 se não me engano…
enfin a solução ta ae se alguem precisar 
Obrigado.