我正在尝试制作一个非常简单的应用程序,让客户预订旅行。 基本上,他们输入姓名,地址,思域,电话,然后输入1-5之间的数字,具体取决于他们想要预订的旅行。例如,1号旅行等于从柏林到巴黎的旅程,从斯德哥尔摩到旅行2等等。
我需要将最后插入的ID输入到Customer表中以与Booking.Customer相关联,这样当客户按下Book Trip时,他的信息将被插入到Customer表中并且他的ID +将什么行程插入我的预订表< / p>
LAST_INSERTED_ID
用于自动增量,所以我无法让它正常工作。
Customer表包含有关客户的所有信息,Booking表包含Customer [引用Customer.ID]和Trip [引用Trip.ID]行在Trip表中。
我道歉,如果我没有意义,只是不能让它工作,不知道如何继续..感谢这里的任何和所有帮助!
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();
答案 0 :(得分:1)
首先,您必须将LAST_INSERTED_ID
表Customer
作为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)
答案 1 :(得分:1)
可能会解决您的问题。
但您始终需要将stored procedure
与transaction
一起使用才能获得更好的性能和安全性。