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