![](/img/trans.png)
[英]Bulk insert from C# list into SQL Server into multiple tables with foreign key constraints
[英]Inserting Data into multiple SQL tables with foreign key constraints using C#
正如标题所暗示的那样,我正在寻找将数据添加到多个表的解决方案,这些表都在一个表单上具有 FK 约束。
基本上,我单击魔术按钮,它会将数据发送到相关表。 查看表关系的屏幕截图,以便您了解总体思路:
我收到此错误:
无法将 NULL 插入 BookingID
对于Payments
表。 这是一个 FK 关系,但基本上当我在 Windows 表单上按Enter时,我希望它在Booking
表中生成主键并链接它,以便将其全部保存为一个预订。
我已经插入了实际预订屏幕的图像(目前非常基本)但它突出显示了表格等。
我想弄清楚如何以更好的方式解释这一点,如果不是很清楚,我深表歉意。 但基本上,预订表中有CustomerID
和PaymentsID
FK。 当我按下回车键时,我希望它发送数据,这样如果我对特定的预订 ID 进行查询,它就会显示所有信息(客户名称、付款等)。
哦,我正在 C# 中做 Windows Forms,我非常非常新,所以请对我温柔一点。
我被要求上传一些代码,所以这里有一点。 我遇到的问题是我不知道如何使用 C# 处理 FK 约束。
using (var cmd = new SqlCommand("INSERT INTO Payments (PaymentMethod, PaymentAmount, PaymentDate, PaymentReceived, Discount) VALUES (@PayMethod,@Cost,@PayDate,@PaymentReceived,@Discount)"))
{
cmd.Connection = con;
cmd.Parameters.Add("@PayMethod", SqlDbType.VarChar).Value = PayMeth.Text;
cmd.Parameters.Add("@Cost", SqlDbType.Money).Value = Cost.Text;
cmd.Parameters.Add("@PayDate", SqlDbType.DateTime).Value = PayDatePick.Text;
cmd.Parameters.Add("@PaymentReceived", SqlDbType.VarChar).Value = PayReceived.Text;
cmd.Parameters.Add("@Discount", SqlDbType.VarChar).Value = DiscountText.Text;
if (cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("Record inserted");
}
else
{
MessageBox.Show("Payment failed");
}
}
您的 Booking.BookingId 是自动递增字段还是唯一字段?
如果不是,当您插入预订记录时,您将需要设置该值(因此它不为空)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.