DataAdapter 更新未正确将数据插入 SQL 服务器?

DataAdapter Update not properly Inserting data into SQL Server?

我有 2 个 DataTables:第一个填充了我数据库中名为 Ticket_Report 的 table 的所有数据,第二个填充了新票证。

我正在 Ticket_report 数据table 中搜索新工单数据表中的重复项(并删除它们)。然后我将新的门票数据 table 合并到 Ticket_report 数据 table.

然后我尝试使用新编辑的 Ticket_report 数据 table 更新 SQL 服务器中的 Ticket_Report table。我期望 Update 方法使用具有来自数据 table 的匹配主键的行更新 SQL 服务器中的 table,并插入不存在的行。

我没有收到任何错误,但行似乎不是 updated/inserted。

con.Open();
DataTable ticketReportDT = new DataTable();
ticketReportDT = newTicketdt.Clone();
ticketReportDT.Columns[0].Unique = true;

SqlCommand cmd2 = new SqlCommand("SELECT * FROM ticket_report", con);
SqlDataAdapter da = new SqlDataAdapter(cmd2);

da.Fill(ticketReportDT);
da.UpdateCommand = new SqlCommandBuilder(da).GetUpdateCommand();

int currentTicketCount = ticketReportDT.Rows.Count;//3234
int newTicketCount = newTicketdt.Rows.Count; //339

//Removing Duplicate tickets in ticketReportDt
foreach (DataRow NewTicketsRow in newTicketdt.Rows)
{
   foreach (DataRow currentTicketsRow in ticketReportDT.Select())
    {
        if (currentTicketsRow.Field<string>(ticketReportDT.Columns[0]) == NewTicketsRow.Field<string>(newTicketdt.Columns[0]))
        {
            currentTicketsRow.Delete();
        }
    }
}

ticketReportDT.AcceptChanges();
int currentTicketCount2 = ticketReportDT.Rows.Count;//2903, is less than last count because duplicates removed

ticketReportDT.Merge(newTicketdt);//add new tickets to ticketReportDT
ticketReportDT.AcceptChanges();

int currentTicketCount3 = ticketReportDT.Rows.Count;//3242, count went up because new tickets added

da.Update(ticketReportDT);//apply changes to database table Ticket_Report
con.Close();
Console.WriteLine("Ticket Transfer Complete");

这运行没有错误。为了测试,我在 SQL 服务器更新前后进行了一次计数查询。

更新前:

select count(*) from TICKET_REPORT
// = 3234

更新后:

select count(*) from TICKET_REPORT
// = 3234 <-Should be 3242 (row count of ticketReportDT)

似乎数据table 的行数正确,但是当我进行更新时,这并没有反映在SQL 服务器中。我做错了什么吗?

由于您在更新数据库之前调用了 ticketReportDT.AcceptChanges(),因此不会更新数据库中的任何内容。