我有一个数据集,并且在每个dataTable下的设计器中都有一个表适配器。所以我可以添加 - >查询到dataTable并选择一个存储过程,然后在表适配器部分中列出。我也可以选择表适配器并将其select / insert / update / delete命令设置为存储过程。
我的问题是有什么区别,更重要的是你怎么知道什么时候调用查询或命令? (我需要知道,因为我可以以不同的方式配置参数,而且这些参数不能正常工作)
例如,我如何知道它正在使用哪一个?
private void saveToolStripButton_Click(object sender, EventArgs e)
{
this.Validate();
this.permitInfoLinksBindingSource.EndEdit();
this.linksTableAdapter.Update(this.dataSet1);
}
以下似乎正在使用Environment变量正确调用存储过程...但是如果我尝试将Environment.UserName.ToUpper()
放在SourceColumn下的“Parameters Collection Editor”中,则会发送null。
this.linksTableAdapter.spInsertLink(Environment.UserName.ToUpper(), fkPermitInfoID,
fPath, ref ident);
答案 0 :(得分:1)
摘录自MSDN有帮助吗?
TableAdapter使用数据命令来读取和写入数据库。 TableAdapter的初始Fill(main)查询用作创建关联数据表的模式的基础,以及与TableAdapter.Update方法关联的InsertCommand,UpdateCommand和DeleteCommand命令。这意味着调用TableAdapter的Update方法将执行最初配置TableAdapter时创建的语句,而不是使用TableAdapter查询配置向导添加的其他查询之一。 使用TableAdapter时,它会使用您通常执行的命令有效地执行相同的操作。例如,当您调用适配器的Fill方法时,适配器在其SelectCommand属性中执行data命令,并使用数据读取器(例如,SqlDataReader)将结果集加载到数据表中。同样,当您调用适配器的Update方法时,它会为数据表中的每个更改记录执行相应的命令(在UpdateCommand,InsertCommand和DeleteCommand属性中)。
据我所知,*Command
是样板查询,而表格下方的是您自己创建的更具体的自定义内容,以满足您更复杂的需求,因此如果您使用命令,则无法通过更复杂的参数进入查询。
我也猜测,当你调用像update等基本动作时,默认命令会被执行而不是之后定义的查询。
我只是简单地使用tableadapters而且我对它们的了解非常浅(一旦我发现它就转移到实体框架),所以这个答案的夜晚不值得...