获取 ID 列中的最高 ID 号并递增
Get highest ID number in ID kolumn and increment
如何从 DataSet 的 ID 列中获取最大的 ID 号?我正在使用 ADO.NET (C#)。如果我这样做:
dataSet.Tables["Students"].Columns["ID"].AutoIncrement = true;
当我到达一个已经存在的 ID 时,应用程序将抛出异常。从 "hight number" 开始只是一个丑陋的 hack。那么如何正确安全地完成这项工作呢?
我在 GridView 中添加新行并将该数据保存到缓存,然后从缓存返回到 DataSet,然后使用 DataAdapter 方法 "Update" 将新数据发送回 SQL服务器.
这是一种方法,因为值将从数据库中插入,因为它是一个 IDENTITY
列,因此分配什么值并不重要。但我会使用负值来表示该行当前未添加到数据库中。
因此增加 added-rows DataTable
的负行计数值:
DataTable tblStudents = dataSet.Tables["Students"];
DataRow addedRow = tblStudents.Rows.Add();
DataTable tblAddedRows = tblStudents.GetChanges(DataRowState.Added);
addedRow.SetField("ID", -1 * tblAddedRows.Rows.Count);
// other columns...
不可能发生冲突,因为此 ID 值只是临时值,将在插入记录后替换为真实值。
如何从 DataSet 的 ID 列中获取最大的 ID 号?我正在使用 ADO.NET (C#)。如果我这样做:
dataSet.Tables["Students"].Columns["ID"].AutoIncrement = true;
当我到达一个已经存在的 ID 时,应用程序将抛出异常。从 "hight number" 开始只是一个丑陋的 hack。那么如何正确安全地完成这项工作呢?
我在 GridView 中添加新行并将该数据保存到缓存,然后从缓存返回到 DataSet,然后使用 DataAdapter 方法 "Update" 将新数据发送回 SQL服务器.
这是一种方法,因为值将从数据库中插入,因为它是一个 IDENTITY
列,因此分配什么值并不重要。但我会使用负值来表示该行当前未添加到数据库中。
因此增加 added-rows DataTable
的负行计数值:
DataTable tblStudents = dataSet.Tables["Students"];
DataRow addedRow = tblStudents.Rows.Add();
DataTable tblAddedRows = tblStudents.GetChanges(DataRowState.Added);
addedRow.SetField("ID", -1 * tblAddedRows.Rows.Count);
// other columns...
不可能发生冲突,因为此 ID 值只是临时值,将在插入记录后替换为真实值。