SQL Server命令生成器和自动递增ID
我有一个SQL Server数据库,我正在将其拉入数据集中进行更改,但是,当我使用SQL Server命令生成器和自动递增ID,sql,sql-server,vb.net,ado.net,Sql,Sql Server,Vb.net,Ado.net,我有一个SQL Server数据库,我正在将其拉入数据集中进行更改,但是,当我使用SqlDataAdapter更新任何特定表时,它不会以SQL使用的相同值启动ID键 我正在使用带有SqlDataAdapter的SqlCommandBuilder。我在MSDN上找到了这个小金块: 除非自动生成命令(如SqlCommandBuilder),否则默认的UpdateRowSource值为“两者”,在这种情况下,默认值为“无” 这很好,但每当我尝试在我的应用程序中更改该属性时,它都会在该行停止执行,但不会
SqlDataAdapter
更新任何特定表时,它不会以SQL使用的相同值启动ID键
我正在使用带有SqlDataAdapter
的SqlCommandBuilder
。我在MSDN上找到了这个小金块:
除非自动生成命令(如SqlCommandBuilder),否则默认的UpdateRowSource值为“两者”,在这种情况下,默认值为“无”
这很好,但每当我尝试在我的应用程序中更改该属性时,它都会在该行停止执行,但不会引发异常
有人有什么建议吗?我希望继续使用命令生成器,但我还需要自动增量ID值是并发的
FdaPoints.SelectCommand.CommandText = "SELECT * FROM points;"
FdaPoints.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord
谢谢几个月前我找到了这个答案,忘了更新我自己的问题。可以使用以下SQL语句附加命令生成器的insert命令: 选择ID=SCOPE\u IDENTITY() 因此,最终代码如下所示:
Dim da As New SqlDataAdapter("", conn)
Dim cmd As New SqlCommand
cmd = SQLCommandBldr.GetInsertCommand.Clone
cmd.CommandText += "; SELECT ID = SCOPE_IDENTITY()"
cmd.UpdatedRowSource = UpdateRowSource.Both
da.InsertCommand = cmd
da.UpdateCommand = SQLCommandBldr.GetUpdateCommand.Clone
da.DeleteCommand = SQLCommandBldr.GetDeleteCommand.Clone
da.Update(YourDataTable)
da.Dispose()