繁体   English   中英

当value为null时,cmd.Parameters.AddWithValue()吗?

[英]cmd.Parameters.AddWithValue() when value is null?

我认为这很简单,但是当value为null时,是否可以使用Isnull(field,[something])?

/*************Connectionstring is located in Web.config ******************/
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

/*************Exec stored Procedure from tblActivity ******************/
using (SqlConnection con = new SqlConnection(CS))
{
    SqlCommand cmd = new SqlCommand("sp_tblActivity", con);
    cmd.CommandType = System.Data.CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@Activity", txtActivity.Text); // , Isnull(txtActivity.text, *changetosomething*)
    cmd.Parameters.AddWithValue("@Comment", txtComment.Text);
    con.Open();
    cmd.ExecuteNonQuery();
    BindGridviewActivity();


}

cmd.Parameters.AddWithValue("@Activity", isnull(txtActivity.Text, ***[dosomething]***)可以在开始时使用if()语句吗?

首先,您可能应该首先避免使用AddWithValue()。

暂时将其搁置一旁,您正在查看控件的Text属性。 要使Text属性始终为null必须做些真正的错误。 您可能只需要检查它是否为空(或者只有空白):

cmd.Parameters.AddWithValue("@Activity", string.IsNullOrEmpty(txtActivity.Text) ? "change to something" : txtActivity.Text);

但是,也许您想向数据库发送实际的SQL NULL SQL NULL与C#/。Net null 在这种情况下,您可以这样做:

cmd.Parameters.AddWithValue("@Activity", string.IsNullOrEmpty(txtActivity.Text) ? DBNull.Value : txtActivity.Text);

您可以使用null-coalescing运算符

cmd.Parameters.AddWithValue("@Activity", txtActivity.Text ?? "something else");

我为DBNULL使用了方法扩展...

public static class Extensions
{
    public static SqlParameter AddWithNullValue(this SqlParameterCollection collection, string parameterName, object value)
    {
        if (value == null)
            return collection.AddWithValue(parameterName, DBNull.Value);
        else
            return collection.AddWithValue(parameterName, value);
    }

}

因此...而不是使用AddWithValue ....您将使用AddWithNullValue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM