【问题标题】:Prevent negative id's from being inserted into Database from .NET DataSet防止从 .NET DataSet 将负 id 插入数据库
【发布时间】:2010-11-08 22:11:39
【问题描述】:

我的数据集已填满,我允许用户向数据表中添加一行。一旦他们确认他们想要添加该行,我就会将该行添加到 DataSet 并继续更新 Database DataTable。

MyTypedDataSet.MyDataTable newRow = dataSetObject.MyDataTable.NewMyDataTableRow();
newRow.Description = "New Row";

dataSetObject.MyDataTable.AddMyDataTableRow( newRow );

我可以通过使用 SQLConnection 并调用 SQLDataAdapter.Update() 来更新数据表,但问题是,数据集中的 ID 值被转移到数据库中,这仍然是负数。

如何更新我的 DataTable 以使新添加的行具有正确递增的 ID?

【问题讨论】:

    标签: c# .net asp.net sql


    【解决方案1】:

    您没有指出您正在使用的 RDBMS,但鉴于您的 cmets 和我的假设,您使用的是 SQL Server。而且,您正在使用 IDENTITY 属性来增加键值。

    如果新行没有获得正确的下一个标识值,您可以运行以下命令来重置该值。

    DBCC CHECKIDENT('table-name', RESEED)
    

    这将使用表中的最大值重新设置标识值。

    您可以使用 IDENT_CURRENT、IDENT_INCR 和 IDENT_SEED 函数查看有关身份的当前信息。

    【讨论】:

      【解决方案2】:

      不要从您的客户那里获取 ID 数据。而是为您的表使用生成的 ID。

      也许你可以使用一个存储过程(CRUD)来捕获 MAX(col)并将 nextid 放在创建的新行中。

      【讨论】:

      • 那么代码中没有办法获取下一个可用的 ID 值吗?我必须编写一个存储过程并使用类似 SELECT IDENT_CURRENT('id') + IDENT_INCR('id')
      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多