2016-04-27 115 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