好吧,所以我正在做一个模拟停车场售票机的项目。我必须能够让用户登录,分配票证,并让他们使用该票证并根据停车库中的时间收费。我将其数据插入具有自动递增ID列的表中,因为我需要能够跟踪它们是哪张票证并相应地添加/删除它们。我正在运行此代码以将其票证添加到数据库中,并且运行良好,在获取数据库提供其票证的ID并将其分配给分配要我们使用的票证对象时遇到了一些麻烦。这是他们计时时使用的代码。
private void EnterBtn_Click(object sender, EventArgs e)
{
DateTime timeIn = new DateTime();
timeIn = DateTime.Now;
int ticketID = 0;
MessageBox.Show("Entered Parking Garage at: " + timeIn.ToString());
//Insert Data into the table, increment the ticketID, store that as the TicketNumber
//in the ticket object
string sqlQuery = "INSERT INTO Tickets (TimeIssued)";
sqlQuery += "VALUES (@TimeIssued)";
using (SqlConnection dataConnection = new SqlConnection("Data Source=stusql.otc.edu;Initial Catalog=th0732193;Integrated Security=True"))
{
using (SqlCommand dataCommand = dataConnection.CreateCommand())
{
dataConnection.Open();
dataCommand.CommandType = CommandType.Text;
dataCommand.CommandText = sqlQuery;
dataCommand.Parameters.AddWithValue("@TimeIssued", timeIn);
dataCommand.ExecuteNonQuery();
ticketID = Convert.ToInt32(dataCommand.Parameters["@TicketID"].Value.ToString());
dataConnection.Close();
}
}
Ticket newTicket = new Ticket();
newTicket.TimeIn = timeIn;
newTicket.TicketNumber = ticketID;
}
所以主要的问题是,由于列是自动递增的,所以我无法添加参数,否则它将使事情搞砸(除非有一种我不知道的方法,如果这样的话,那太好了!) ,这是一个问题,因为我需要将该ticketID分配给票证对象。
我的问题是,如何将存储在数据库中的TicketID设置为我的Ticket对象中的Ticker number属性。
我四处张望,无法找到可以在我的特定情况下对我有帮助的解决方案,因此尽管我确定这是一个愚蠢的问题,但我确实需要一些帮助,我将不胜感激!
最佳答案
如下更改sql查询
string sqlQuery ="INSERT INTO Tickets (TimeIssued) OUTPUT INSERTED.TicketID VALUES(@TimeIssued)
然后
dataCommand.CommandText = sqlQuery;
dataCommand.Parameters.AddWithValue("@TimeIssued", timeIn);
int TicketID = (int) dataCommand.ExecuteScalar();