admin

使用SqlCommand +参数将数据库值设置为null

sql

使用带有值的参数很好,但是当我尝试将数据库中的字段设置为null时,我将失败。该方法认为我未设置有效参数或未指定参数。

例如

Dim dc As New SqlCommand("UPDATE Activities SET [Limit] = @Limit WHERE [Activity] = @Activity", cn)

If actLimit.ToLower() = "unlimited" Then
    ' It's not nulling :(
    dc.Parameters.Add(New SqlParameter("Limit", Nothing))
Else
    dc.Parameters.Add(New SqlParameter("Limit", ProtectAgainstXSS(actLimit)))
End If

有什么我想念的吗?我做错了吗?


阅读 197

收藏
2021-05-10

共1个答案

admin

您需要DBNull.Value。

在共享的DAL代码中,我使用的辅助方法只是执行以下操作:

    foreach (IDataParameter param in cmd.Parameters)
    {
        if (param.Value == null) param.Value = DBNull.Value;
    }
2021-05-10