【问题标题】:SQL Server Command Builder and AutoIncrementing IDsSQL Server 命令生成器和自动递增 ID
【发布时间】:2015-05-25 01:36:01
【问题描述】:

我有一个 SQL Server 数据库,我将其拉入数据集以进行更改,但是,当我使用 SqlDataAdapter 更新任何特定表时,它不会以 SQL 使用的相同值启动 ID 键.

我正在使用SqlCommandBuilderSqlDataAdapter。我在 MSDN 上找到了这个小金块:

默认的 UpdateRowSource 值为 Both 除非命令是自动生成的(如 SqlCommandBuilder 的情况),在这种情况下默认为 None。

这很好,但每当我尝试在我的应用程序中更改该属性时,它会在该行停止执行,但不会引发异常。

有人有什么建议吗?我想继续使用命令生成器,但我还需要自动增量 ID 值是并发的。

FdaPoints.SelectCommand.CommandText = "SELECT * FROM points;"
FdaPoints.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord

谢谢

【问题讨论】:

    标签: sql sql-server vb.net ado.net


    【解决方案1】:

    几个月前我找到了这个答案,却忘了更新我自己的问题。您可以使用以下 SQL 语句附加命令生成器的插入命令:

    选择 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()
    

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2012-01-13
      • 2018-08-06
      相关资源
      最近更新 更多