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

时间:2018-03-28 13:41:27

标签: c# asp.net parameters null

我认为这很简单,但是当值为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()语句?

3 个答案:

答案 0 :(得分:3)

首先,您应该move away from using AddWithValue() in the first place.

暂时搁置一下,你正在查看Control的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);

答案 1 :(得分:1)

您可以使用null-coalescing operator

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

答案 2 :(得分:0)

我使用了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