我知道这个错误/问题已经发布了很多。我已经研究了一段时间,仍然无法弄清楚如何通过我的DataTable中的更改来正确更新我的数据库。
我有一个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说我只能使用CommandBuilder,如果我的SELECT语句只包含1个表,我有2个。
其他StackOverflow的答案是说如果我正在使用JOIN,我就是我自己。
如何正确完成此更新?我可以用C#做这个吗?我应该将数据表传递给sqlserver中的存储过程吗?
答案 0 :(得分:0)
我发现在存储过程中创建合并语句更容易,只需将数据表传递给存储过程即可。