我正在构建一个带有 DataGridView 的 Windows 窗体,用于显示 SQL 服务器中的信息。 Windows 窗体如下所示:
按下“删除”按钮时,我有一个函数可以获取该行的 EmpId 并通过数据访问层从界面和 SQL 服务器中删除该行。
public static void DeleteById(int EmpId)
{
Organization.EmployeesDataTable dtEmpTable = new Organization.EmployeesDataTable();
OrganizationTableAdapters.EmployeesTableAdapter empAdapter = new OrganizationTableAdapters.EmployeesTableAdapter();
empAdapter.Fill(dtEmpTable);
foreach(Organization.EmployeesRow ur in dtEmpTable)
{
if(ur.EmpID == EmpId)
{
ur.Delete();
}
}
empAdapter.Update(dtEmpTable);
}
但是,当我运行代码时,它会陷入
empAdapter.Update(dtEmpTable);
。错误如下:System.Data.SqlClient.SqlException: 'Must declare the scalar variable "@IsNull_".'
我的逻辑有什么问题吗?我的假设是 .Update 函数很混乱,因为该行已被删除,因此没有任何内容可以“更新”。如果是这样的话,我该怎么做才能删除该行?
我希望该行在 Windows 窗体上消失,并且该行在 SQL 服务器中也消失。
dtEmpTable.Rows.Remove(ur);
代替ur.Delete();
请参阅:从数据表中删除特定行。dtEmpTable.AcceptChanges();
这是微软官方推荐:
希望对你有帮助!