TableAdapter.update方法,它去了哪里?

时间:2009-09-08 22:30:11

标签: c# .net data-binding listbox tableadapter

我使用您的标准智能控件创建了一个ListBox,并将其连接到数据库。它通过查询构建器获取我在那里预先生成的数据,所以当我这样做时:

this.calibrate_swipesTableAdapter.Fill(this.xperdex_crandallDataSet.calibrate_swipes);

我得到一个包含我数据的列表框。

那么,当我向它添加一大块数据时,通过这个:

toadd["card_number"] = card_number;
this.xperdex_crandallDataSet.Tables["calibrate_swipes"].Rows.Add(toadd);

它也有效。它很棒。现在,当我关闭时,我失去了所有的信息。更新我的适配器和AcceptChanges,对吗?

没那么快。当我打电话

this.calibrate_swipesTableAdapter.Update(this.xperdex_crandallDataSet.calibrate_swipes);

我得到“不包含'更新'的定义”。

是什么给出的?我没有看到为什么填充相同的东西没有任何理由,也没有更新方法。

1 个答案:

答案 0 :(得分:6)

您可能需要查看TableAdapter Overview说明:

  

如果主查询中有足够的信息,则在生成TableAdapter时,默认情况下会创建InsertCommand,UpdateCommand和DeleteCommand命令。 如果TableAdapter的主查询不只是单个表SELECT语句,则设计器可能无法生成InsertCommand,UpdateCommand和DeleteCommand。如果未生成这些命令,则在执行TableAdapter.Update方法时可能会收到错误。

您有两种选择:

  • 更改主查询
  • 更改UpdateCommand。

要更改UpdateCommand,请找出为TableAdapter生成的类的名称。代码应如下所示:


SqlCommand yourUpdateCommand = new SqlCommand("UPDATE...", connection);
this.calibrate_swipesTableAdapter.Adapter.UpdateCommand = yourUpdateCommand;

更新:

正如评论者所说,还有其他条件可能无法生成命令。 查看评论。