當我運行這個方法GetNewID()時,它應該從數據庫返回最大的Product_Id + 1。所以如果數據庫中的最大Product_Id是20,那麼下一個應該是21. 這工作正常。如何在數據庫中沒有記錄時獲取新的ID?
但什麼不工作是當數據庫中沒有記錄,它是空的。我已經嘗試了一個不同的select語句和一些if語句,但沒有奏效。你有什麼想法可以解決這個問題嗎?提前致謝。
public static int GetNewId()
{
string selectString = @"SELECT MAX(Product_Id) FROM Products";
try
{
newId= 0;
connection = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=DB;Integrated Security=SSPI;");
connection.Open();
SqlCommand cmdSelectLastId = new SqlCommand(selectString, connection);
newId = Convert.ToInt32(cmdSelectLastId.ExecuteScalar());
}
finally
{
if (connection != null)
{
connection.Close();
}
}
return newId + 1;
}
使用自動增量['IDENTITY'(http://technet.microsoft.com/en-us/library/ms188059。 aspx)的值。否則,你正在創造一個低效率的競爭條件。除此之外:'COALESCE'是你的朋友。 –
我認爲最好在數據庫中創建一個序列和觸發器來處理這個問題。 – Jasti