Estoy escribiendo una rutina C# para llamar a un proceso almacenado. En la lista de parámetros que estoy ingresando, es posible que uno de los valores pueda ser legalmente nulo. Así que pensé que haría uso de una línea como esta:¿Es posible unir string y DBNull en C#?
cmd.Parameters.Add(new SqlParameter("@theParam", theParam ?? DBNull.Value));
Desafortunadamente, esto devuelve el siguiente error:
CS0019: Operator '??' cannot be applied to operands of type 'string' and 'System.DBNull'
Ahora, esto parece bastante clara, pero no entiendo la razón de ser eso. ¿Por qué esto no funcionaría? (Y a menudo, cuando yo no entiendo por qué algo no está funcionando, no es que no puede trabajo ... es que estoy haciendo mal.)
es lo que realmente tiene que estirar esto en una declaración if-then más larga?
EDIT:.. (Dicho sea de paso, a aquellos que sugieren usar sólo "nula" tal como está, no funciona que originalmente figuraba nula sería traducida-AUTO en DBNull también, pero al parecer no lo hace (¿Quién sabía?)
Para información, los Comandos creados por un CommandBuilder tienen un conjunto de los parámetros construidos para ti Sin embargo, surge el mismo problema en el sentido de que no puede esperar pasar nulo a uno de los parámetros en el ParameterCollection generado. usted todavía tiene que hacer lo descrito arriba. – rohancragg
Buena solución simple :-) – IrishChieftain
También puede crear un método de extensión para hacer esto. –