如何向c#tableadapter更新方法添加额外的过程参数?
我在C#中有一个Winforms应用程序,它使用数据集的tableadapter fill和update方法调用SQL Server数据库中的存储过程。这很好用。更新存储过程的所有参数都映射到datatable中的现有列 现在我想向update存储过程和方法添加一个额外的参数。但此列不是来自datatable,而是来自表单上的另一个控件。它是一个简单的日期,只从日历中选择一次,而不是在网格中逐行设置 因此,我向存储过程添加了一个新参数,但没有将其映射到数据集中的列。当我这样做并重新配置tableadapter时,我得到了错误: 缺少某些参数绑定。数据集中的值不会用于这些参数 我希望并且期望tableadapter更新方法能够在这个附加参数中接受方法参数,但是它没有 我应该如何处理这个问题?是否有方法重写update方法以提供此值?或者我应该向数据集中添加一个“合成”列,在更新时为每一行(使用一个值)设置该列如何向c#tableadapter更新方法添加额外的过程参数?,c#,stored-procedures,parameters,binding,tableadapter,C#,Stored Procedures,Parameters,Binding,Tableadapter,我在C#中有一个Winforms应用程序,它使用数据集的tableadapter fill和update方法调用SQL Server数据库中的存储过程。这很好用。更新存储过程的所有参数都映射到datatable中的现有列 现在我想向update存储过程和方法添加一个额外的参数。但此列不是来自datatable,而是来自表单上的另一个控件。它是一个简单的日期,只从日历中选择一次,而不是在网格中逐行设置 因此,我向存储过程添加了一个新参数,但没有将其映射到数据集中的列。当我这样做并重新配置table
如有任何建议,将不胜感激。谢谢 以下VB代码适用于我:
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters.AddWithValue("@IntParam", 5)
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters.Add("@TabParam", SqlDbType.Structured).Value = tempDataTable
Me.MyTabTableAdapter.Update(MyDataSet.MyTab)
MyTabTableAdapter
是与MyDataSet.MyTab
表格相对应的表格适配器
Param@TabParam
是用户表类型的参数。我能够在代码中动态创建一个数据表
,并将其传递给服务器端。tempDataTable
的列顺序必须与用户表类型中定义的列顺序完全匹配
注意:我的第一次尝试是按照您的建议对数据集使用“合成”列。它没有起作用。无法将此类列绑定到存储过程param
更新
上面的代码可以工作,但是。。。。就一次。
我没有考虑到每次保存尝试都会添加另一个同名参数,从而导致崩溃。
目前,我认为最好的方法是在MyDataSet.xsd设计模式下使用鼠标将适当的参数添加到MyTabTableAdapter,然后简单地设置:
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters("@TabParam").Value = tempDataTable
这是VB代码,所以()表示索引:)。以下VB代码适合我:
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters.AddWithValue("@IntParam", 5)
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters.Add("@TabParam", SqlDbType.Structured).Value = tempDataTable
Me.MyTabTableAdapter.Update(MyDataSet.MyTab)
MyTabTableAdapter
是与MyDataSet.MyTab
表格相对应的表格适配器
Param@TabParam
是用户表类型的参数。我能够在代码中动态创建一个数据表
,并将其传递给服务器端。tempDataTable
的列顺序必须与用户表类型中定义的列顺序完全匹配
注意:我的第一次尝试是按照您的建议对数据集使用“合成”列。它没有起作用。无法将此类列绑定到存储过程param
更新
上面的代码可以工作,但是。。。。就一次。
我没有考虑到每次保存尝试都会添加另一个同名参数,从而导致崩溃。
目前,我认为最好的方法是在MyDataSet.xsd设计模式下使用鼠标将适当的参数添加到MyTabTableAdapter,然后简单地设置:
Me.MyTabTableAdapter.Adapter.InsertCommand.Parameters("@TabParam").Value = tempDataTable
这是VB代码so()表示索引:)