【发布时间】:2021-04-26 18:16:09
【问题描述】:
我正在尝试使用我的 WPF/C# 表单中的一些数据来更新我的 Microsoft Access 数据库。数据库中的数据首先用于填充表单。一旦用户请求对此表单进行更改,我将数据保存在字典中(即“OriginalName”及其值),然后他们进行更改并单击完成,我在其中保存新数据(即 NewName 及其值)。问题是,如果数据库的一部分一开始是空的,而我尝试使用该空值更新数据库,则会失败。例如,如果数据库包含姓名、性别和地址(Michael,Male,275 Blue Avenue)。然后用户更改名称(James,Male,275 Blue Avenue),我的更新成功运行
UPDATE TABLENAME
SET NameCol = @newName, GenderCol = @newGender, AddressCol = @newAddress
where NameCol = @OriginalName AND GenderCol = @OriginalGender AND AddressCol = @OriginalAddress
所有这些参数都已按以下正确顺序设置和使用:
command.Parameters.AddWithValue("@newName",myDictionary["NewName"]);
但是,如果一列为空,则会失败。例如,如果 Address 列原本为空,用户更改了 Name,但 Gender 和 Address 保持不变,则更新失败。任何帮助将非常感激。谢谢。
【问题讨论】:
-
如果用户更改了姓名但保持性别和地址不变
@newGender、@newAddress、@OriginalGender和@OriginalAddress的值是多少? -
是的,它们将是相同的值,因为在它们进行更改并单击“完成”后,我会再次从表单 UI 中获取所有值并将这些值保存为“新”值,所以如果它们有没有更改性别和地址,它们的值与原始值相同。我在字典中检查了这一点。
-
、 或 - 那里有太多冲突的标签。删除不涉及的。 -
我建议不要将空字符串保存到字段中。我更喜欢 Null。
-
@forpas 感谢您为我指明正确的方向。我找到了一个解决方案,如果元素为空,我将返回一个空字符(“\0”)。这成功运行并更新所有表。再次感谢。