我有一个SQL Server数据库,正在提取数据集以进行更改,但是,当我使用来更新任何特定的表时SqlDataAdapter
,它不会以与SQL使用相同的值来启动ID密钥。
我利用SqlCommandBuilder
同SqlDataAdapter
。我在MSDN上发现了这个小块:
除非自动生成命令(如SqlCommandBuilder),否则默认的UpdateRowSource值为Both。在这种情况下,默认值为None。
一切都很好,但是每当我尝试在应用程序中更改该属性时,它都会在该行停止执行,但不会引发异常。
有人有什么建议吗?我想继续使用命令生成器,但是我还需要自动增量ID值是并发的。
FdaPoints.SelectCommand.CommandText = "SELECT * FROM points;"
FdaPoints.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord
谢谢
我几个月前找到了这个答案,却忘了更新自己的问题。您可以在命令构建器的insert命令后附加以下SQL语句:
SELECT ID = SCOPE_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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句