按钮添加表中的信息

时间:2013-08-13 08:37:51

标签: c#

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();

它说:

  

您向表格请求的更改未成功,因为   他们会在索引,主键或中创建重复值   relationship.Change包含的字段或字段中的数据   重复数据,删除索引或重新定义索引以允许   重复输入并重试。

我该如何纠正?

2 个答案:

答案 0 :(得分:0)

我建议采取以下步骤:

  1. 向表中添加唯一ID列并将其设置为主键
  2. 为该属性分配一个GUID号,您可以看到该here
  3. 的代码

    如果能解决问题,请告诉我 祝你好运!

答案 1 :(得分:0)

  

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

从错误消息中可以看出,您尝试插入的数据包含已存在于数据库中的主键。因为插入会创建一个重复的密钥,是不允许的因此错误。

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

这样的东西
IF EXISTS( Select 'x' from Kandidati WHERE YOurPrimaryKey = keyyouarepassing)
BEGIN
    UPDATE Kandidati 
    values
    ....
    WHERE
    YOurPrimaryKey = keyyouarepassing
END
ELSE
BEGIN
   INSERT into Kandidati ....
END