我正在尝试制作一个非常简单的应用程序,让客户预订旅行。基本上,他们输入姓名、地址、Civic、电话,然后根据他们想预订的行程输入1-5之间的数字。例如,旅行1等于从柏林到巴黎的旅行,旅行2等于从斯德哥尔摩到任何地方的旅行,等等。
我需要最后插入到Customer表中的ID与Booking相关。客户,这样当客户按Book Trip时,他的信息被插入到Customer表中,他的ID +什么行程被插入到我的Booking表
LAST_INSERTED_ID
是自动递增的,所以我不能让它正常工作。
Customer表包含客户的所有信息,Booking表由Customer[references Customer]行组成。ID]和Trip[引用一个Trip。ID]在我的行程表
我很抱歉,如果我不明白,只是不能让它工作,不知道如何继续…感谢这里的任何帮助!
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();
首先你必须把Customer
表中的LAST_INSERTED_ID
变成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 procedure
和transaction
。