将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编号属性。
我已经找遍了,找不到一个解决这个问题的方法,可以帮助我在我的具体情况下,所以虽然我知道这是一个愚蠢的问题,我真的需要一些帮助,我将非常感激!
更改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();