C# 如何在插入查询中有条件地插入空值?
我想做一个insert查询,即使我插入空值,它也会插入到我的表中,但我似乎做不到 我的桌子是空的C# 如何在插入查询中有条件地插入空值?,c#,sql,visual-studio-2010,visual-studio-2012,C#,Sql,Visual Studio 2010,Visual Studio 2012,我想做一个insert查询,即使我插入空值,它也会插入到我的表中,但我似乎做不到 我的桌子是空的 elem1 Not null elem2 Can be null elem3 Not null elem4 Can be null 命令: InsertQuery(elem1, elem2, elem3, elem4); 或 如果两者都符合我的要求,怎么做 大概是这样的: insert into table1 values (@value1, @value2, @value3, @value4)
elem1 Not null
elem2 Can be null
elem3 Not null
elem4 Can be null
命令:
InsertQuery(elem1, elem2, elem3, elem4);
或
如果两者都符合我的要求,怎么做
大概是这样的:
insert into table1
values (@value1, @value2, @value3, @value4)
where value2 and value4 IS NULL
但我似乎无法让它工作。因为您包含了一个c#标记,我假设您需要能够实现这一点的代码。因此,请看一下最佳实践
查询文本如下所示:
INSERT INTO table1 VALUES (@Variable1, @variable2, @Variable3, @variable4);
始终在生产查询中命名插入列。当您在命令窗口中破解查询时,跳过字段列表是可以的,但是如果您的代码没有为列命名,那么如果向表中添加了一列,它将中断 如果您提前知道
elem2
和elem4
将始终为空,只需插入elem1
和elem3
INSERT INTO table1 (elem1, elem3)
VALUES (@value1, @value3)
如果您事先不知道,请插入所有字段:
INSERT INTO table1 (elem1, elem2, elem3, elem4)
VALUES (@value1, @value2, @value3, @value4)
请注意,绑定参数时,可以将变量用于非空值,但对于空值,必须使用DBNull.Value
:
if (var1 == null) {
cmd.Parameters.AddWithValue("@value1", DBNull.Value);
} else {
cmd.Parameters.AddWithValue("@value1", var1);
}
// and likewise for values 2, 3, and 4
您也可以使用一行程序来实现这一点,尽管它比上面的if
方法更难阅读:
cmd.Parameters.AddWithValue("@value1", ((Object)var1) ?? DBNull.Value);
// and likewise for values 2, 3, and 4
也许,如果您编辑问题并添加真实代码,那么您可以避免对寻求调试帮助的问题进行闭包(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现此问题所需的最短代码。
cmd.Parameters.AddWithValue("@value1", ((Object)var1) ?? DBNull.Value);
// and likewise for values 2, 3, and 4