重置数据表中的自动增量

本文关键字:置数据 数据表 | 更新日期: 2023-09-27 17:56:04

我用对 SQL CE 数据库的DataAdapter填充DataSet。数据显示在绑定到数据集的数据表的DataGrid上。 我的数据源中有一个自动递增 ID 字段(或在 SQLCE 中,称为 PRIMARY KEY IDENTITY);相应地,我还在我的DataTable中设置了一个自动增量 ID 列。

/* when DataTable is first populated, start counting from Rows.Count */
/* if empty, starts with 1 */
dt.Column["id"].AutoIncrementSeed = dt.Rows.Count + 1;

当我清除数据表时出现问题。我想将自动增量计数器重置回 1 但无法,我尝试了以下方法:

/* clearing and disposing DataTable, DataSet, DataAdaptor does not reset the counter */
dt.Clear();
dt.Dispose();
ds.Clear();
ds.Dispose()
da.Dispose()
/* manually re-setting the AutoIncrementSeed also does not reset the counter */
dt.Column["id"].AutoIncrementSeed = 1;

它只是带着Clear()之前离开的柜台离开了.如何重置数据表中的自动增量?

重置数据表中的自动增量

像这样使用

dt.Clear();
dt.Column["id"].AutoIncrementStep = -1;
dt.Column["id"].AutoIncrementSeed = -1;
dt.Column["id"].AutoIncrementStep = 1;
dt.Column["id"].AutoIncrementSeed = 1;

查看以下链接了解更多信息

http://www.eggheadcafe.com/community/aspnet/10/25407/autoincrementseed.aspx

我已经将代码简化为这个版本:

dt.Column["id"].AutoIncrement = True
dt.Column["id"].AutoIncrementSeed = 0
dt.Column["id"].AutoIncrementStep = -1
dt.Column["id"].AutoIncrementSeed = -1

这对我来说更好,因为种子和步骤的值为 -1。我认为AutoIncrementSeed属性的实现是这样的:

if (_AutoIncrementSeed <> value)
    _InternalAutoIncrementSeed = value 
_AutoIncrementSeed = value

_InternalAutoIncrementSeed用于 NewRow 函数。