插入一对一表格

时间:2014-01-13 11:30:50

标签: c# sql sql-server

如下图所示,我有两张桌子。我将ID从tblDriver拖到ID of tblCar。1-1 Table

在C#中,我想在这些空表中插入数据。我可以插入到tblDriver但是tblCar给了我关于外键的错误。我的意思是第一个“ExecuteNonQuery”执行得很好,但第二个执行错误。enter image description here

我可以或者可以同时插入两张桌子吗?

4 个答案:

答案 0 :(得分:0)

如果你在表之间建立了密钥关系,那意味着你已经说过其中一个id必须匹配另一个。

但是现在,你没有插入匹配的id。

如果你想要这种关系,你需要按顺序插入它们,而不是同时插入它们 但是你还需要从第一个中捕获id并将其插入第二个中。

答案 1 :(得分:0)

你的做法是错误的。如果要在CAR表中映射驱动程序ID,请使用单独的外键列。一个司机可以有一辆或多辆车,但一辆车不能超过1个司机。我希望这是你的情景。如果你想让1个驱动程序有1个汽车,请确保将驱动程序输入到表中,然后将汽车输入到具有驱动程序ID的表中。因此,如果您想让1名驾驶员拥有1辆汽车,那么您可能拥有相同的车牌ID和驾驶员ID,因此对于驾驶员的每一个条目,只有一个车辆入口。

答案 2 :(得分:0)

在这里,您必须使用从表tblCar生成的@@IDENTITY来在表tblDriver中插入外来ID值。

以下代码有助于解决您的问题:

DataTable _dataTable = new DataTable();
SqlDataAdapter _dataAdapter = new SqlDataAdapter();
SqlCommand _cmd = new SqlCommand();

_cmd.Connection = connection;
_cmd.CommandText = "INSERT INTO tblCar(ColumName) Values(value) select @@IDENTITY";
_dataAdapter.SelectCommand = _cmd;
//Here _dataTable will hold ID value from tblCar
_dataAdapter.Fill(_dataTable);

//Here insert same generated ID value in tblDriver
_cmd.CommandText = "INSERT INTO tblDriver(@ID, ColumName) Values(value)";
_cmd.Parameters.AddWithValue("@ID", _dataTable.Rows[0][0]);
_cmd.ExecuteNonQuery();

答案 3 :(得分:0)

谢谢你们。

根据c#中语句的执行顺序,我只需要在SQL Server中将键反之亦然。完成!!!!

你很棒。