使用带有值的参数很好,但是当我尝试将数据库中的字段设置为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
有什么我想念的吗?我做错了吗?
您需要DBNull.Value。
在共享的DAL代码中,我使用的辅助方法只是执行以下操作:
foreach (IDataParameter param in cmd.Parameters) { if (param.Value == null) param.Value = DBNull.Value; }