我厌倦了编写以下代码:
/* Commenting out irrelevant parts
public string MiddleName;
public void Save(){
SqlCommand = new SqlCommand();
// blah blah...boring INSERT statement with params etc go here. */
if(MiddleName==null){
myCmd.Parameters.Add("@MiddleName", DBNull.Value);
}
else{
myCmd.Parameters.Add("@MiddleName", MiddleName);
}
/*
// more boring code to save to DB.
}*/
所以,我写了这个:
public static object DBNullValueorStringIfNotNull(string value)
{
object o;
if (value == null)
{
o = DBNull.Value;
}
else
{
o = value;
}
return o;
}
// which would be called like:
myCmd.Parameters.Add("@MiddleName", DBNullValueorStringIfNotNull(MiddleName));
如果这是执行此操作的好方法,那么您建议使用什么作为方法名称?DBNullValue 或 StringIfNotNull有点冗长和混乱。
我也对完全缓解这个问题的方法持开放态度。我很乐意这样做:
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName);
但这是行不通的,因为“Operator '??'不能应用于“string”和“System.DBNull”类型的操作数”。
如果需要的话,我可以使用 C# 3.5 和 SQL Server 2005。
将您的任何一个值投射到object
它会编译。
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? (object)DBNull.Value : MiddleName);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)