簡體   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