Fala galera, estava procurando um tópico sobre este problema, achei, mais o cara conseguiu resolver, mais não postou a resolução, o meu eh bem parecido com o dele… estou fazendo uma aplicação em java, e estou com problemas em chave duplicada, ou seja, esse erro --> Duplicate entry ‘18’ for key ‘PRIMARY’ 18, eh a id que está tentando inserir dois tipos de produtos ao mesmo tempo, fala que a venda foi cadastrada com sucesso, mais gera essa exceção…
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘18’ for key ‘PRIMARY’
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
O meu código da minha classe Vendas:
public class VendasControl {
PreparedStatement pst;
ResultSet rs;
String cadastraVenda = “INSERT INTO VENDAS (ID_VENDAS, ID_PRODUTOS, ID_ALUNOS, DATA_VENDAS, QUANTIDADE) "
+ " VALUES (?,?,?,?,?)”;
String buscaUltimoCodigo = “SELECT MAX(ID_VENDAS) AS ID_VENDAS FROM VENDAS”;
public VendasControl(){
}
public int buscarCodigoUltimaVenda(){
try{
ConexaoBD bd = new ConexaoBD();
pst = (PreparedStatement) bd.conectar().prepareStatement(buscaUltimoCodigo);
rs = pst.executeQuery();
if (rs.last()){
return rs.getInt(“id_vendas”);
}
bd.desconectar();
} catch (SQLException ex){
ex.printStackTrace();
}
return 0;
}
public void CadastrarVenda(VendasBean venda){
try{
ConexaoBD bd = new ConexaoBD();
pst = (PreparedStatement) bd.conectar().prepareStatement(cadastraVenda);
pst.setInt(1, venda.getId());
pst.setInt(2, venda.getIdProduto());
pst.setInt(3, venda.getIdAluno());
pst.setDate(4, venda.getDataVenda());
pst.setInt(5, venda.getQuantidade());
pst.executeUpdate();
bd.desconectar();
}catch (SQLException ex){
ex.printStackTrace();
}
}
}
Código que cadastra a venda:
private void cadastrarVenda(){
if(venda.size() == 0){
JOptionPane.showMessageDialog(this, “Inclua pelo menos um produto!”);
}else{
try{
VendasControl vc = new VendasControl();
SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd"); //formata o campo para datas
java.util.Date d = new java.util.Date();
Date data = Date.valueOf(formato.format(d)); //data da venda
int codigo = vc.buscarCodigoUltimaVenda() + 1;
for (int i = 0; i < venda.size(); i++){
venda.get(i).setIdAluno(alunos.get(cbAlunos.getSelectedIndex()).getId());
venda.get(i).setDataVenda(data);
venda.get(i).setId(codigo);
vc.CadastrarVenda(venda.get(i));
}
JOptionPane.showMessageDialog(this, "Venda cadastrada com sucesso!");
}catch (Exception ex){
JOptionPane.showMessageDialog(this, "Erro ao cadastrar Venda!");
}
}
}
Aqui a imagem do que eu to falando !
http://img171.imageshack.us/img171/913/print6lu.png
Quando eu clico em finalizar, é quando gera esse erro que eu falei acima !
Obs: Não importa o produto, pode ser de nome diferente, id diferente, se eh dois ou mais, da esse erro, agora se for um produto, nem gera erro e vai de booa !
Agradeço desde já quem puder me ajudar ! Obrigado e até mais 