如何更新特定列而不会干扰数据库中的其他列?

时间:2016-07-31 02:40:41

标签: c# sql-server

null

它不起作用,因为每当我更新任何列时,它都会使其他列为NULL。

1 个答案:

答案 0 :(得分:0)

一个明显的解决方案是使用列列表构建update

另一种方法是使用coalesce()

update Medicine
    set Name = coalesce(' " + textbox1.Text + " ', Name),
        Company = coalesce(' " + textbox2.Text + " ', Company),
        Type = coalesce(' " + textbox3.Text + " ', Type,
        Quantity = coalesce(' " + textbox4.Text + " ', Quantity)
 where P_id =' " + textbox5.Text + " '

实际上,您应该使用参数而不是直接在查询字符串中放置值。直接放入参数会使系统容易受到SQL注入的攻击。<​​/ p>

那就是说,我不确定你是如何获得NULL价值的。你可能真的想要:

update Medicine
    set Name =(case when ' " + textbox1.Text + " ' = '' then '" + textbox1.Text + "' else Name end),
        . . .