SQL/C#为客户预订行程

SQL/C# book a trip for customers

我正在尝试制作一个非常简单的应用程序来让客户预订旅行。 基本上,他们输入姓名、地址、Civic、Phone,然后输入 1-5 之间的数字,具体取决于他们要预订的旅行。因此,例如,行程 1 等于从柏林到巴黎的行程,行程 2 从斯德哥尔摩到任何地方,依此类推。

我需要最后插入客户 table 的 ID 与 Booking.Customer 相关,这样当客户按下 Book Trip 时,他的信息就会插入客户 table 并且他的 ID + 什么行程被插入到我的预订中 Table

LAST_INSERTED_ID是自动递增的,所以我没法正常使用。

客户 table 拥有关于客户的所有信息,预订 table 包含行客户[引用 Customer.ID] 和旅行[引用 a Trip.ID ] 在我的旅行中 table.

如果我说得不对,我深表歉意,我无法让它正常工作,也不知道如何继续。感谢这里的所有帮助!

 string sql = "Begin; INSERT INTO Customer(Name, PIN, Address, Phone) VALUES(@param2, @param3, @param4, @param5); INSERT INTO Booking(Customer, Trip) VALUES(LAST_INSERT_ID(), @param6);";


 SqlCommand command = new SqlCommand(sql, connection);
 command.Parameters.Add("@param2", SqlDbType.VarChar, 255).Value = txtBoxName.Text;
 command.Parameters.Add("@param3", SqlDbType.Char, 11).Value = textBoxPIN.Text;
 command.Parameters.Add("@param4", SqlDbType.VarChar, 255).Value = textBoxAddress.Text;
 command.Parameters.Add("@param5", SqlDbType.VarChar, 255).Value = textBoxPhone.Text;
 command.Parameters.Add("@param6", SqlDbType.Int, 1).Value = txtBoxTrip.Text;
 command.CommandType = CommandType.Text;
 command.ExecuteNonQuery();

 connection.Close();

首先,您必须将 CustomerLAST_INSERTED_ID 设为 table 为 identity

如果已经那么你可以更进一步

那么您的 sql 查询应该是

DECLARE @Last_Id int
INSERT INTO Customer(Name, PIN, Address, Phone) VALUES(@param2, @param3, @param4, @param5)
SET @Last_Id=SCOPE_IDENTITY()
INSERT INTO Booking(Customer, Trip) VALUES(@Last_Id, @param6)

或许可以解决您的问题。

但您始终需要将 stored proceduretransaction 一起使用以获得更好的性能和安全性。