如何在带有外键的表中插入数据

本文关键字:插入 数据 | 更新日期: 2023-09-27 18:35:07

我想在表 Article 中插入数据,该表具有表 Categorie 的外键。

我用文本框创建了一个表单,并将外键放在一个有界的组合框中Categorie表。这是我使用的代码:

private void button15_Click(object sender, EventArgs e)
{
    SqlConnection con3 = new SqlConnection();
    con3.ConnectionString = @"Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'GestStock.mdf;Integrated Security=True;User Instance=True";
    con3.Open();
    SqlCommand insertCommande1 = new SqlCommand("INSERT INTO [Article] (CodeArticle, LibArticle, IdCategorie, Quantite, StockActuel, StockMinimum, PrixAchat, DateAchat, NumeroFacture)" +
              "VALUES(@CodeArticle, @LibArticle, @IdCategorie, @Quantite, @StockActuel, @StockMinimum, @PrixAchat, @DateAchat, @NumeroFacture)", con3);
    insertCommande1.Parameters.AddWithValue("@CodeArticle", codeArticleTextBox1.Text);
    insertCommande1.Parameters.AddWithValue("@LibArticle", libArticleTextBox.Text);
    insertCommande1.Parameters.AddWithValue("@IdCategorie",idCategorieComboBox.Text);
    insertCommande1.Parameters.AddWithValue("@Quantite", Convert.ToInt32(quantiteTextBox1.Text));
    insertCommande1.Parameters.AddWithValue("@StockActuel", Convert.ToInt32(stockActuelTextBox1.Text));
    insertCommande1.Parameters.AddWithValue("@StockMinimum", Convert.ToInt32(stockMinimumTextBox1.Text));
    insertCommande1.Parameters.AddWithValue("@PrixAchat", Convert.ToInt32(prixAchatTextBox1.Text));
    insertCommande1.Parameters.AddWithValue("@DateAchat", Convert.ToDateTime(dateAchatDateTimePicker1.Text));
    insertCommande1.Parameters.AddWithValue("@NumeroFacture", numeroFactureTextBox.Text);
    insertCommande1.ExecuteNonQuery();
    MessageBox.Show("L'article est ajouté avec succées");
    con3.Close();
}

但是当我执行此代码时,Article已成功添加,但是当我退出应用程序并重新运行它时,我收到以下错误消息:

无法启用约束。一行或多行包含违反类型约束的值,而不是 null、唯一或外键。

我知道这是由这个引起的

insertCommande1.Parameters.AddWithValue("@IdCategorie", idCategorieComboBox.Text);

所以我的问题是如何以正确的方式进行插入查询?

提前谢谢。

如何在带有外键的表中插入数据

试试这个:

insertCommande1.Parameters.AddWithValue("@IdCategorie",  idCategorieComboBox.SelectedValue.ToString());