违反主键约束的windowsForms

时间:2016-05-10 09:04:12

标签: c# sql-server winforms

我想在我的RDV表中插入一条记录。

这是我的表的查询创建

CREATE TABLE [dbo].[RDV] (
[idRdv]       INT           NOT NULL,
[objet]       NVARCHAR (50) NULL,
[objectif]    NVARCHAR (50) NULL,
[DateRdv]     DATETIME      NULL,
[commentaire] NVARCHAR (50) NULL,
[archive]     NVARCHAR (50) NULL,
[idClient]    INT           NULL,
[idUser]      INT           NULL,
[idResultat]  INT           NULL,
CONSTRAINT [PK_RDV] PRIMARY KEY CLUSTERED ([idRdv] ASC),
FOREIGN KEY ([idClient]) REFERENCES [dbo].[Client] ([idClient]),
FOREIGN KEY ([idUser]) REFERENCES [dbo].[User] ([idUser]),
FOREIGN KEY ([idResultat]) REFERENCES [dbo].[Resultat] ([idResultat]);

这是我的插入代码

 public RDV()
    {
        InitializeComponent();
        textBox3.Visible = false;
        label7.Visible = false;

    }
  private void btnAdd_Click(object sender, EventArgs e)
    {
        Random rdm = new Random();
        int num = rdm.Next(5, 2000);
        textBox3.Text = num.ToString();

        string cmdStr = "Insert into RDV (idRdv,idUser,idClient,objet,objectif,DateRdv,commentaire) select @idRdv,@idUser,@idClient,@objet,@objectif,@DateRdv,@commentaire from RDV, Client, [User] where RDV.idClient = Client.idClient and RDV.idUser = [User].idUser ";
        SqlConnection con = new SqlConnection("Data Source=ADMIN-PC\\SQLEXPRESS;Initial Catalog=timar;Integrated Security=True");
        SqlCommand cmd = new SqlCommand(cmdStr, con);
        cmd.Parameters.AddWithValue("@idRdv", textBox3.Text);
        cmd.Parameters.AddWithValue("@idUser", (comboBox1.SelectedValue));
        cmd.Parameters.AddWithValue("@idClient", (comboBox2.SelectedValue));
        cmd.Parameters.AddWithValue("@objet", textBox1.Text);
        cmd.Parameters.AddWithValue("@objectif", textBox2.Text);
        cmd.Parameters.AddWithValue("@DateRdv", dateTimePicker1.Value.ToString());
        cmd.Parameters.AddWithValue("@commentaire", textBox4.Text);

        con.Open();
        int LA = cmd.ExecuteNonQuery();
        Console.WriteLine("Ligne ajoutée: {0}", LA);

而且,字段 idRdv ,我想添加它,但应该像上面的代码一样隐藏和随机。

当我运行我的项目时,它显示错误违反PRIMARY KEY“PK_RDV”。无法在对象'dbo.RDV中插入重复键。重复键的值:1505(这是idRdv的值)

Pleaaaaseee,帮助我。我该如何纠正呢。

提前致谢

1 个答案:

答案 0 :(得分:1)

您正在使用init: function (editor) { CKEDITOR.dtd.$inline['iframe'] = 1; var pluginName = 'iframe', 的ID。由于您的表ID列包含Random,因此可能会出现此错误。

要么在插入之前检查表中不存在生成的随机数。或者使用方法获取Primary Key Constraint并将其设置为新ID