![](/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.