我有一个任务,要求我更新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得到重视,从不删除,在任何一种情况下,在数据库本身中根本没有真正更新.
我对错误的看法有何见解?
确保在调用employee_table.AcceptChanges()之后调用Update()以将更改保存到数据库.