簡體   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