【发布时间】: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