DataAdapter.Update()不会更新DB中的数据

era*_*zap 0 c# ado.net

我有一个任务,要求我更新northwind数据库,我做了一些像教程所说的如下

我填写DataTable使用The DataAdapter.Fill(table).

Delete,Insert,Update使用构建命令CommangBuilder

SqlDataAdapter adapter = new SqlDataAdapter(selectStr, conn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter); 
adapter.DeleteCommand = builder.GetDeleteCommand(true);
adapter.UpdateCommand = builder.GetUpdateCommand(true);
adapter.InsertCommand = builder.GetInsertCommand(true);
adapter.Fill(employees_table);
Run Code Online (Sandbox Code Playgroud)

我还为表设置了一个主键:

DataColumn[] employees_keys = new DataColumn[2];
employees_keys[0] = employees.Columns["EmployeeID"];
employees_table.PrimaryKey = employees_keys; 
Run Code Online (Sandbox Code Playgroud)

现在我试图删除并添加一行:

// accepts an employee object and creates a new new row with the appropriate values for 
// an employee table row 
DataRow row = ConvertEmployeeToRow(employeeToAdd);
employee_table.Rows.Add(row);`
Run Code Online (Sandbox Code Playgroud)

并删除一行:

DataRow row = employees.Rows.Find(employeeToDismiss.ID);
employees.Rows.Remove(row); 
Run Code Online (Sandbox Code Playgroud)

我还应该指出,我试图使用row.SetAdded()row.Delete()

无论如何,最后我尝试更新数据库

int k = employees_adapter.Update(employees_table);
Run Code Online (Sandbox Code Playgroud)

在添加的行上有时k得到重视,从不删除,在任何一种情况下,在数据库本身中根本没有真正更新.

我对错误的看法有何见解?

Tim*_*Tim 6

确保在调用employee_table.AcceptChanges()之后调用Update()以将更改保存到数据库.

  • 据我所知,dataadapter作为一个名为AcceptChangeDuringUpdate,adapter.AcceptChangesDuringUpdate的属性,默认设置为true (2认同)