valores valor validar tienen tener que puede propiedad objeto método los llamar este ejemplos debe datos con acepta .net sql

.net - validar - los datos tienen valor null no se puede llamar a este método o propiedad con valores null



Establezca un valor de base de datos en nulo con un parámetro SqlCommand+ (3)

Anteriormente, me enseñaron cómo configurar parámetros en una consulta SQL en .NET en esta respuesta ( clic ).

El uso de parámetros con valores está bien, pero cuando intento establecer un campo en la base de datos para anular, no tengo éxito. O el método piensa que no estoy estableciendo un parámetro válido o que no especifica un parámetro.

p.ej

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

¿Se me escapa algo? ¿Lo estoy haciendo mal?


Intente configurarlo en DbNull.Value .


quieres DBNull .Value.

En mi código DAL compartido, uso un método auxiliar que simplemente funciona:

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


Utilizo un método de extensión SqlParameterCollection que me permite agregar un parámetro con un valor que admite valores NULL. Se encarga de convertir null en DBNull . (Lo siento, no soy fluido en VB)

public static class ExtensionMethods { public static SqlParameter AddWithNullable<T>(this SqlParameterCollection parms, string parameterName, T? nullable) where T : struct { if (nullable.HasValue) return parms.AddWithValue(parameterName, nullable.Value); else return parms.AddWithValue(parameterName, DBNull.Value); } }

Uso:

string? optionalName = "Bozo"; cmd.Parameters.AddWithNullable("@Name", optionalName);