好吧,所以我正在做一个模拟停车场售票机的项目。我必须能够让用户登录,分配票证,并让他们使用该票证并根据停车库中的时间收费。我将其数据插入具有自动递增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();

07-28 04:46