我可以使用StringBuilder在VB中将数据库值设置为null吗?

时间:2014-04-17 20:06:41

标签: sql sql-server vb.net

我有一个应用程序,当我运行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

1 个答案:

答案 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。