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评论 –
而且更安全得多。如果您允许用户编辑多个记录,或者同时编辑多个用户,则此功能无法很好地扩展。你会得到重复的密钥。 –