我有一个应用程序,当我运行update语句时,在给定条件下,必须将值设置为null。
我正在使用StringBuilder
来创建我的sql字符串,而我不能将值设置为null。鉴于我已使用DBNull.Value
并且它在数据库中插入一个空字符串(""
而不是 null
,您可以将空值插入到使用stringbuilder和执行查询语句的数据库?
这是我正在使用的。我只试过.Append(DBNull.Value)
但是查询不会像那样执行,因为它没有放任何东西所以查询最终会像
... , [lastRunProcessGUID] = where ...
(使用Nothing
导致同样的事情)
With psSql
.Append("update [connection string] ")
.Append("set [Status] = ")
.Append("'" & newStatus & "' ")
If newStatus.Equals("0") Then
.Append(", [lastRunProcessGUID] = ")
.Append("'" & DBNull.Value & "'")
End If
.Append(" where [workItemID] = ")
.Append("'" & workItemID & "' AND")
.Append("' [StepLogID] = ")
.Append("'" & stepLogID & "'")
End With
答案 0 :(得分:2)
因为您正在将SQL语句构建为字符串,所以只需像使用Mgmt-Studio
一样编写语法if newStatus.Equals("0") Then
.Append(", [lastRunProcessGUID] = NULL")
End If
在从DB读取值时执行逻辑时, DbNull.Value
更有用。
if ( rdr["col"] == DbNull.Value ) { ... }
如果可能或适当的话,我会更改您的代码以使用Parameterized
SQL来阻止SQL注入或使用存储过程而不是从应用程序生成的动态SQL。