Sam*_*Sam 15 .net c# tableadapter
所以我上周有这个工作.至少,我以为我做到了! DataGridView更新
然后我今天再次开始研究这个项目并且正在进行中
在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand.
上
scDB.SSIS_Configurations_StagingDataTable table = (scDB.SSIS_Configurations_StagingDataTable)stagingGrid.DataSource;
myStagingTableAdapter.Update(table);
Run Code Online (Sandbox Code Playgroud)
在StagingTableAdapter具有一个附加的查询这需要"过滤器"作为参数.那是用来填补DataGridView.在创建该查询的向导中,我看到"生成了更新".我发现大多数有此错误的帖子都要求使用命令构建器生成更新语句.我该怎么办?
Dan*_*Dan 13
我遇到了和Sam一样的问题.我有工作代码突然不再工作了.我不知道什么时候写它,但它必须自动推断更新命令,然后停止这样做.也许MS之间的服务包在我们从未注意到的版本之间.无论如何,我遇到的解决方案是使用(在我的情况下为oracle)OracleCommandBuilder,它将DataAdapter(在调用fill之后)作为构造函数的参数,然后调用GetUpdateCommand()并将其分配给DataAdapter上的UpdateCommand.
pseudocode:
DataAdapter da = new DataAdapter(...)
...
da.Fill();
da.UpdateCommand = new OracleCommandBuilder(da).GetUpdateCommand();
...
da.Update();
Run Code Online (Sandbox Code Playgroud)
该错误非常直观:适配器需要有效的SQL Update语句.数据集设计者和CommandBuilders会为你生成这些,但手工制作一些SQL也没有错.
无论如何,您必须验证(调试器)仍然配置了Update语句以及它实际上是什么.它可能更像是SQL而不是C#问题.
编辑:Command Builder工具只处理直接,单表,Select语句.使用加入或任何花哨的东西,你自己.
小智 6
Dan的解决方法适用于我,但我可以使用SqlCommandBuilder而不是OracleCommandBuilder:
DataAdapter da = new DataAdapter(...)
...
da.Fill();
da.UpdateCommand = new SqlCommandBuilder(da).GetUpdateCommand();
...
da.Update();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47285 次 |
| 最近记录: |