C#错误:更新与修改的行传递数据收集时需要有效的updatecommand?

问题描述:

我知道这个错误/问题已经发布了很多。我一直在研究一段时间,仍然无法确定如何正确地更新我的数据库,并在我的DataTable中进行更改。C#错误:更新与修改的行传递数据收集时需要有效的updatecommand?

我有一个DataTable充满来自我的数据库中的2个不同表的信息。只是对来自1个表格的列进行了更改。我需要加入计算的第二个表。

因此当我尝试更新我的数据库时,只会对1个表进行更改。我仍然需要ado.net,所以即时通讯应用正确的方式来应用这些更改基于来自MSDN和*的信息。

这是我的代码:

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说,我只能用CommandBuilder的,如果我的SELECT语句只包括1台,我有2个二。

其他*的答案是说,如果即时通讯使用JOIN,我自己。

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

我发现只是在存储过程中创建一个合并语句并将数据表传递给存储过程更容易。

+0

add solution pls –