C#错误:当传递具有修改行的数据行集合时,更新需要有效的updatecommand
本文关键字:集合 更新 updatecommand 有效 数据 错误 修改 | 更新日期: 2023-09-27 18:30:14
我知道这个错误/问题已经发布了很多。Iv已经研究了一段时间,仍然不知道如何使用DataTable中的更改来正确更新我的数据库。
我有一个DataTable,里面装满了数据库中两个不同表的信息。不过,只对来自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中的存储过程吗?
我发现在存储过程内部创建合并语句并将数据表传递给存储过程更容易。