如何使用外键在表中插入数据

时间:2014-12-24 09:50:19

标签: c# sql-server insert foreign-keys

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

我用TextBoxes创建了一个表单,然后将外键放在一个有界的ComboBox到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);

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

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