好的,所以我有一個項目可以模擬停車場售票機。我必須能夠讓用戶登錄,爲他們分配一張票,然後讓他們使用該票據在停車場中按時間計時並按時收費。我將他們的數據插入到具有自動遞增ID列的表中,因爲我需要能夠跟蹤它們的票據並相應地添加/刪除它們。我正在運行這個代碼來將他們的票據添加到數據庫中,並且它運行良好,我遇到了一些麻煩,它們使用數據庫提供的票據ID並將其分配給工作分配中要使用的票據對象。下面是我使用的,當他們在時鐘的代碼。在SQL中將C#變量設置爲自動遞增的列值的值?
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屬性。
我已經找遍了,無法找到解決這個問題,這將有助於我在我的具體情況,所以雖然我敢肯定這是一個愚蠢的問題,我真的需要一些幫助,我將不勝感激!
看看這個:http://blog.sqlauthority.com/2007/03/25/sql- server * identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/- 你應該*能夠將select附加到你的查詢中,並通過'Execute'獲取結果名稱)而不是'ExecuteNonQuery()' – Rob
@Rob:最有可能的'.Execute Scalar()'因爲'SELECT'只返回一行,只有一列(新插入的'ID') –