SQL / C#预订客户之旅

时间:2015-05-26 11:07:16

标签: c# mysql logic

我正在尝试制作一个非常简单的应用程序,让客户预订旅行。 基本上,他们输入姓名,地址,思域,电话,然后输入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();

2 个答案:

答案 0 :(得分:1)

首先,您必须将LAST_INSERTED_IDCustomer作为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 proceduretransaction一起使用才能获得更好的性能和安全性。