我使用您的标准智能控件创建了一个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);
我得到“不包含'更新'的定义”。
是什么给出的?我没有看到为什么填充相同的东西没有任何理由,也没有更新方法。
答案 0 :(得分: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;
更新:
正如评论者所说,还有其他条件可能无法生成命令。 查看评论。