2016-04-27 36 views
0

我的問題是如何獲得表中的主鍵的最大值,將其增加1,然後將該結果放入特定的文本框中。稍後插入文本以數據庫作爲新紀錄。謝謝C#我如何獲得主鍵的最大值

+4

那豈不是更容易有主鍵是標識列,讓數據庫採取更新它的照顧? – Tim

+1

這樣做有危險。例如,2人都訪問同一頁面並獲得相同的最大ID。現在一個帖子在另一個之前發佈,最大id現在已經改變。第二個人在嘗試更新時會導致主鍵衝突。我會建議下面的Tims評論 –

+0

而且更安全得多。如果您允許用戶編輯多個記錄,或者同時編輯多個用戶,則此功能無法很好地擴展。你會得到重複的密鑰。 –

回答

1

這可能會導致程序運行緩慢,如果數據庫包含噸的記錄,但它適用於我。

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 
*/ 
+0

雖然這確實回答了問題,但出於上述註釋的原因,應用程序生成主鍵並不是一個好主意。 – Tim