Com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityconstraintviolationexception: duplicate entry 1 for key primary

3 respostas
javamysql
A

Boa tarde, estou fazendo um trabalho para a faculdade e ao tentar gravar os dados do produto da a seguinte mensagem:
com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityconstraintviolationexception: duplicate entry 1 for key primary

private void jGravarActionPerformed(java.awt.event.ActionEvent evt) {

try {

PreparedStatement pst = conecta.conn.prepareStatement(insert into Produto (idProduto,nome,ncm,cest,descricaoNcm,letra,aliquotaPis,aliquotaCofins,naturezaReceita,mva) values(?,?,?,?,?,?,?,?,?,?));

pst.setString(1,jTextFieldidProduto.getText());

pst.setString(2,jTextFieldNome.getText());

pst.setString(3,jTextFieldNCM.getText());

pst.setString(4,jTextAreaDescricaoNcm.getText());

pst.setString(5,jTextFieldCest.getText());

pst.setString(6,jTextFieldLetra.getText());

pst.setString(7,jTextFieldAliP.getText());

pst.setString(8,jTextFieldAliC.getText());

pst.setString(9,jTextFieldNatureza.getText());

pst.setString(10,jTextFieldMva.getText());

pst.executeUpdate();

JOptionPane.showMessageDialog(rootPane, Gravado com sucesso!);

} catch (SQLException ex) {

JOptionPane.showMessageDialog(rootPane, Erro ao gravar!\n ERRO:+ex);

Alguém sabe o que seria?

OBS: coloquei todos os nomes iguais ao que esta no banco de dados.

3 Respostas

V

No banco de dados existe um dos campos que se chama “chave primaria”, ele é o campo que faz registro se diferenciar de outro, portanto esse campo não pode ter registros iguais.
O erro que esta aparecendo é um erro normal, acontece quando vc esta tentando inserir um registro cujo a chave primaria já exista no seu Banco de Dados.

A

Muito obrigado Vinicius

V

Eu evito ao máximo definir chave primaria na “mão”, no seu caso muito provavelmente a chave primaria seja o campo idProduto, que poderia ser um campo do tipo auto increment. Assim o SGBD (o Mysql no seu caso) vai definir que o idProduto=0 para o primeiro registro, idProduto=1 para o segundo e assim por diante.

Você não usa o auto increment quando por exemplo quer criar a tabela pessoa e quer utilizar como chave primaria o CPF da pessoa. Nesse caso sim é justificável não utilizar o auto increment.

Criado 15 de março de 2018
Ultima resposta 15 de mar. de 2018
Respostas 3
Participantes 2