2

我用您的标准智能控件制作了一个 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);

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

是什么赋予了?我看不出有任何理由说明为什么填充的东西没有更新方法。

4

1 回答 1

6

您可能想看看TableAdapter Overview,其中指出:

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

你有两个选择:

  • 更改您的主要查询
  • 更改更新命令。

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


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

更新:

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

于 2009-09-08T23:10:41.837 回答