防止将负数从.NET DataSet插入数据库

时间:2010-11-08 22:11:39

标签: c# .net asp.net sql

我填充了数据集,并允许用户在数据表中添加一行。一旦他们确认他们想要添加行,我就将行添加到DataSet并继续更新Database DataTable。

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

dataSetObject.MyDataTable.AddMyDataTableRow( newRow );

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

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

2 个答案:

答案 0 :(得分:1)

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

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

DBCC CHECKIDENT('table-name', RESEED)

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

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

答案 1 :(得分:0)

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

可能您可以使用捕获MAX(col)的存储过程(CRUD)并将nextid放入创建的新行中。