如何清晰快速地使用 DBNull.Value 参数化空字符串

2024-01-07

我厌倦了编写以下代码:

/* 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(使用前将#替换为@)

如何清晰快速地使用 DBNull.Value 参数化空字符串 的相关文章

随机推荐