【问题标题】:C# Error: Update Requires a valid updatecommand when passed datarow collection with modified rows?C# 错误:当传递带有修改行的数据行集合时,更新需要有效的更新命令?
【发布时间】:2016-04-18 18:04:18
【问题描述】:

我知道这个错误/问题已经发布了很多。我已经研究了一段时间,但仍然无法弄清楚如何使用我的 DataTable 中所做的更改正确更新我的数据库。

我有一个数据表,其中包含来自我数据库中 2 个不同表的信息。不过,仅对来自 1 个表的列进行了更改。第二个表我需要加入计算。

所以当我尝试更新我的数据库时,只会对 1 个表进行更改。我仍然需要 ado.net,所以我很难根据来自 MSDN 和 StackOverflow 的信息应用正确的方法来应用这些更改。

这是我的代码:

 using (SqlCommand cmd = new SqlCommand("SELECT INCIDENT_NO, report_dt,MIN(theStart) as The_Start, Resolved_DT, Resolution_TIME, resolution_met,response_met,max_response_time,max_resolution_time,impact FROM TICKET_REPORT JOIN TimeTracker ON Incident_NO=theTask WHERE Resolved_DT != '' GROUP BY INCIDENT_NO,report_dt,Resolved_DT,Resolution_Time, resolution_met,response_met,max_response_time,max_resolution_time,impact", sqlConn))
            {
                var calc = new Calculation(holidays, new OpenHours("09:00;17:00"));
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                dtResolution.Columns.Clear();
                dtResolution.Clear();
                da.Fill(dtResolution);

               //-------Making calculation changes to columns from one table in datatable here---------
                try
                {
                    da.Update(dtResolution);
                    Console.WriteLine("Update successful");
                }
                catch(Exception ex)
                {
                    Console.WriteLine("Updated failed");
                    Console.WriteLine(ex.Message);
                }
                da.Dispose();
            }

我倾向于 CommandBuilder 将为我创建更新命令,但 MSDN 说如果我的 SELECT 语句只包含 1 个表,我只能使用 CommandBuilder,我有 2 个。

其他 StackOverflow 答案是说,如果我使用 JOIN,我自己。

如何正确完成此更新?我可以在 C# 中执行此操作吗?我应该将数据表传递给 sqlserver 中的存储过程吗?

【问题讨论】:

    标签: c# sql-server datatable ado.net sqldataadapter


    【解决方案1】:

    我发现在存储过程中创建合并语句,然后将数据表传递给存储过程更容易。

    【讨论】:

    • 请添加解决方案
    猜你喜欢
    • 2013-09-05
    • 2010-10-09
    • 1970-01-01
    • 2010-12-23
    • 2011-05-05
    • 2014-07-10
    • 2016-01-13
    • 2016-02-10
    相关资源
    最近更新 更多