将c#变量设置为SQL中自动递增的列值

本文关键字:变量 设置 SQL | 更新日期: 2023-09-27 18:18:01

好了,我有一个模拟停车场售票机的项目。我必须能够让用户打卡,给他们分配一张票,让他们用这张票打卡离开,并根据他们在停车场的时间收费。我将他们的数据插入到一个表中,该表具有自动递增的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编号属性。

我已经找遍了,找不到一个解决这个问题的方法,可以帮助我在我的具体情况下,所以虽然我知道这是一个愚蠢的问题,我真的需要一些帮助,我将非常感激!

将c#变量设置为SQL中自动递增的列值

更改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();

完成此工作,将其添加到dataccommand之后。ExecuteNonQuery行吗?

dataCommand.CommandText = "SELECT @@IDENTITY";
int id = dataCommand.ExecuteScalar();