1
private void btnDodaj_Click(object sender, EventArgs e)

    {

        if (txtIme.Text == "")
        {
            MessageBox.Show("Unesite ime kandidata.");
            return;
        }
        if (txtPrezime.Text=="")
        {
            MessageBox.Show("Unesite prezime kandidata.");
            return;
        }
        if (numUspeh.Value==0)
        {
            MessageBox.Show("Unesite uspeh kandidata iz srednje skole.");
            return;
        }
        if(numPoeni.Value==0)
        {
            MessageBox.Show("Unesite broj poena kandidata osvojenih na prijemnom.");
            return;
        }

        dtpDatumRodj.Value = DateTime.Now;
        OleDbConnection konekcija = new OleDbConnection(constring);
        konekcija.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = konekcija;

cmd.CommandText = String.Format(
"INSERT INTO Kandidati(Ime,Prezime,DatumRodjenja,UspehSkola,PoeniPrijemni) VALUES   ('{0}' ,'{1}' , '{2}' , '{3}' , '{4}' )" 
,txtIme.Text,txtPrezime.Text,dtpDatumRodj.Value,numUspeh.Value,numPoeni.Value);
        cmd.ExecuteNonQuery(); 
        konekcija.Close();
        ds.Clear();
        da.Fill(ds);

当我单击该行上的按钮“btnDodaj(btnAdd)”时引发异常

cmd.ExecuteNonQuery();

它说:

您对表请求的更改不成功,因为它们会在索引、主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据、删除索引或重新定义索引以允许重复条目并重试。

我该如何纠正这个?

4

2 回答 2

0

我建议采取以下步骤:

  1. 向您的表中添加一个唯一的 id 列并将其设置为主键
  2. 为该属性分配一个 GUID 编号,您可以在此处查看代码

让我知道这是否解决了您的问题祝您好运!

于 2013-08-13T08:46:13.127 回答
0

在索引、主键或关系中创建重复值

从错误消息中可以明显看出,您尝试插入的数据包含数据库中已经存在的主键。并且由于插入会创建一个重复的 key ,因此这是不允许的,因此会出现错误。

解决方案:您应该首先检查您尝试插入的数据的主键是否已经存在,而不是更新它而不是插入新的主键。就像是

IF EXISTS( Select 'x' from Kandidati WHERE YOurPrimaryKey = keyyouarepassing)
BEGIN
    UPDATE Kandidati 
    values
    ....
    WHERE
    YOurPrimaryKey = keyyouarepassing
END
ELSE
BEGIN
   INSERT into Kandidati ....
END
于 2013-08-13T08:46:42.083 回答