如何将自动生成的ID插入外键列

时间:2019-10-03 02:46:12

标签: c# sql-server

因此,我对C#和SQL还是很陌生。我有两个表(Project,Proptype)。这些是表格中的内容:

项目

  • ProjectId(主键,自动递增,整数)
  • PropTypeId(外键,自动递增,整数)
  • ProjectName
  • NumberOfUnits
  • 位置

属性

  • PropTypeId(主键,自动递增,整数)
  • PropType

我将PropTypeId放入一个组合框,该组合框将显示Proptype列的内容(该列已填充​​了值ResidentialIndustrial)。

以下是该程序的屏幕截图:Image of program with error.

这是我使用的代码:

SqlConnection sqlcon = new SqlConnection(dbconnectionstring);

try
{
    sqlcon.Open();

    SqlCommand createcommand = new SqlCommand("INSERT INTO [Project](ProjectName, NumberOfUnits, PropTypeId, Location)" +  
      "VALUES(@ProjectName, @NumberOfUnits, @PropTypeId, @Location)", sqlcon);

    createcommand.Parameters.AddWithValue("@ProjectName", prname.Text);
    createcommand.Parameters.AddWithValue("@NumberOfUnits", unitnum.Text);
    createcommand.Parameters.AddWithValue("@PropTypeId", prtype.Text);
    createcommand.Parameters.AddWithValue("@Location", locationtb.Text);

    createcommand.ExecuteNonQuery();

    MessageBox.Show("Saved");
    sqlcon.Close();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

如果有帮助,我正在使用SQL Server。

运行程序时,它显示错误

  

将nvarchar值“ Residential”转换为数据类型int时,转换失败。

我希望代码能够自动识别“住宅”的ID为“ 1”,并将其放入Project表中。我想不是那样的。希望有人可以帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

我在想这个

 createcommand.Parameters.AddWithValue("@PropTypeId", prtype.Text);

应该是

 createcommand.Parameters.AddWithValue("@PropTypeId", Convert.ToInt32([prtTypeId.Text]));