0
我的問題是如何獲得表中的主鍵的最大值,將其增加1,然後將該結果放入特定的文本框中。稍後插入文本以數據庫作爲新紀錄。謝謝C#我如何獲得主鍵的最大值
我的問題是如何獲得表中的主鍵的最大值,將其增加1,然後將該結果放入特定的文本框中。稍後插入文本以數據庫作爲新紀錄。謝謝C#我如何獲得主鍵的最大值
這可能會導致程序運行緩慢,如果數據庫包含噸的記錄,但它適用於我。
DataTable myDataTable = new DataTable();
/*
Add record from primary key column to datatable
*/
//Add primary key from datatable to List<int>
List<int> primaryKeyList = new List<int>();
foreach (DataRow row in myDataTable.Rows)
{
primaryKeyList.Add(Int32.Parse(row[0].ToString()));
}
int maxKey = primaryKeyList.Max();
primaryKeyList.Clear();
myDataTable.Dispose();
/*
Do whatever you want with maxKey
*/
或
DataTable myDataTable = new DataTable();
/*
Add record from primary key column to datatable
*/
int maxKey = 0;
//Find max key
foreach (DataRow row in myDataTable.Rows)
{
if(Int32.Parse(row[0].ToString()) > maxKey) maxKey = Int32.Parse(row[0].ToString());
}
myDataTable.Dispose();
/*
Do whatever you want with maxKey
*/
雖然這確實回答了問題,但出於上述註釋的原因,應用程序生成主鍵並不是一個好主意。 – Tim
那豈不是更容易有主鍵是標識列,讓數據庫採取更新它的照顧? – Tim
這樣做有危險。例如,2人都訪問同一頁面並獲得相同的最大ID。現在一個帖子在另一個之前發佈,最大id現在已經改變。第二個人在嘗試更新時會導致主鍵衝突。我會建議下面的Tims評論 –
而且更安全得多。如果您允許用戶編輯多個記錄,或者同時編輯多個用戶,則此功能無法很好地擴展。你會得到重複的密鑰。 –