【问题标题】:SCOPE_IDENTITY() after TableAdapter Update, using BindingSourceTableAdapter 更新后的 SCOPE_IDENTITY(),使用 BindingSource
【发布时间】:2013-02-11 12:46:47
【问题描述】:

尝试在 TableAdapter.Update 之后获取行的自动增量 ID。 数据已绑定,因此不会像this case 中那样将行添加到数据表中。

关于如何解决这个问题的任何想法?

谢谢

【问题讨论】:

    标签: vb.net vb.net-2010 bindingsource tableadapter scope-identity


    【解决方案1】:

    为什么不在TableAdapter.Update之后使用这个:

    CType(xBindingSource.Current, DataRowView).Item("ID")
    

    【讨论】:

      【解决方案2】:

      您需要通过在插入查询中包含一个 select 语句来检索新创建的 id;您还需要将执行模式更改为标量。 This blog post有更多细节

      【讨论】:

      • 谢谢彼得,但是当即将插入的数据被绑定时,我将如何使用它?我有一个表单,它的所有字段都绑定到数据表。
      • 当您的网格通过绑定源绑定时,数据将被 bs 推回数据集或(T 的 BindingList 等),通常通过调用 bs 上的 EndEdit。但是您仍然必须在 tableadapter 上调用 update 才能将数据返回到数据库本身。换句话说,这是一个两步的过程,我怀疑你把这两个阶段混淆在一起了。
      • 我使用的是 EndEdit,然后是 TableAdapter.Update(DataSet.Table)。您发布的解决方案在您使用 TA.Insert 时很有用,而当您使用 Insert 时,您必须提供一行,因为它已绑定,所以我没有。
      • 抱歉,Gil 反思了一下,这可能不是您所缺少的拼图。你是对的,这在使用 dbDirect 时很有用。在您的场景中,应该发生的是,在设计器中,您的数据集应该在“高级选项”中选中“刷新数据表”。然后当您在网格中创建一个新行然后在您的 ta 上调用 update 时,将插入新行并重新查询数据表。这会将带有标识的新行拉回网格中。
      • 没错,但是我没有使用网格...如何手动检索它?
      猜你喜欢
      • 2015-11-04
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多