SQL 服务器命令生成器和自动递增 ID
SQL Server Command Builder and AutoIncrementing IDs
我有一个 SQL 服务器数据库,我正在将其拉入数据集进行更改,但是,当我使用 SqlDataAdapter
更新任何特定的 table 时,它不会以 SQL 使用的相同值开始 ID 密钥。
我正在使用 SqlCommandBuilder
和 SqlDataAdapter
。我在 MSDN 上找到了这个小块:
The default UpdateRowSource value is Both unless the command is automatically generated (as in the case of the SqlCommandBuilder), in which case the default is None.
太好了,但是每当我尝试在我的应用程序中更改 属性 on 时,它会停止在该行执行,但不会引发异常。
有人有什么建议吗?我想继续使用命令生成器,但我还需要并发自动增量 ID 值。
FdaPoints.SelectCommand.CommandText = "SELECT * FROM points;"
FdaPoints.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord
谢谢
几个月前我找到了这个答案,但忘了更新我自己的问题。您可以使用此 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()
我有一个 SQL 服务器数据库,我正在将其拉入数据集进行更改,但是,当我使用 SqlDataAdapter
更新任何特定的 table 时,它不会以 SQL 使用的相同值开始 ID 密钥。
我正在使用 SqlCommandBuilder
和 SqlDataAdapter
。我在 MSDN 上找到了这个小块:
The default UpdateRowSource value is Both unless the command is automatically generated (as in the case of the SqlCommandBuilder), in which case the default is None.
太好了,但是每当我尝试在我的应用程序中更改 属性 on 时,它会停止在该行执行,但不会引发异常。
有人有什么建议吗?我想继续使用命令生成器,但我还需要并发自动增量 ID 值。
FdaPoints.SelectCommand.CommandText = "SELECT * FROM points;"
FdaPoints.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord
谢谢
几个月前我找到了这个答案,但忘了更新我自己的问题。您可以使用此 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()