繁体   English   中英

使用 C# 将数据插入到具有外键约束的多个 SQL 表中

[英]Inserting Data into multiple SQL tables with foreign key constraints using C#

正如标题所暗示的那样,我正在寻找将数据添加到多个表的解决方案,这些表都在一个表单上具有 FK 约束。

基本上,我单击魔术按钮,它会将数据发送到相关表。 查看表关系的屏幕截图,以便您了解总体思路:

表关系 在此处输入图像描述

我收到此错误:

无法将 NULL 插入 BookingID

对于Payments表。 这是一个 FK 关系,但基本上当我在 Windows 表单上按Enter时,我希望它在Booking表中生成主键并链接它,以便将其全部保存为一个预订。

我已经插入了实际预订屏幕的图像(目前非常基本)但它突出显示了表格等。

这张图是程序的样子

我想弄清楚如何以更好的方式解释这一点,如果不是很清楚,我深表歉意。 但基本上,预订表中有CustomerIDPaymentsID 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM