Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将插入数据库时的空字符串设置为null_C#_.net_String_Sql Insert_Dbnull - Fatal编程技术网

C# 将插入数据库时的空字符串设置为null

C# 将插入数据库时的空字符串设置为null,c#,.net,string,sql-insert,dbnull,C#,.net,String,Sql Insert,Dbnull,我还没有找到解决这个问题的正确方法,我知道这很简单,但我忘记了怎么做。我有一个表单,其中有一个textfield字段,用户不需要填写。我想在数据库中插入NULL,而不是它当前正在执行的0。不过,我不确定我错过了什么。该文本框名为taxRateTxt,我目前拥有的内容不适用于我: try { using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].T

我还没有找到解决这个问题的正确方法,我知道这很简单,但我忘记了怎么做。我有一个表单,其中有一个textfield字段,用户不需要填写。我想在数据库中插入NULL,而不是它当前正在执行的0。不过,我不确定我错过了什么。该文本框名为
taxRateTxt
,我目前拥有的内容不适用于我:

try
{
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        cn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;

        cmd.Parameters.Add(new SqlParameter("@FIPSCountyCode", countyCodeTxt.Text));
        cmd.Parameters.Add(new SqlParameter("@StateCode", stateCodeList.SelectedValue));
        cmd.Parameters.Add(new SqlParameter("@CountyName", countyNameTxt.Text));

        string taxStr = taxRateTxt.Text;
        //test for an empty string and set it to db null
        if (taxStr == String.Empty)
        {
            taxStr = DBNull.Value;

        }

        cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));

        if (AddBtn.Visible == true)

            cmd.CommandText = addQuery;

        if (EditBtn.Visible == true)
        {
            cmd.CommandText = editQuery;
        }

        cmd.ExecuteNonQuery();
        cn.Close();
    }

我错过了什么

删除这段代码

string taxStr = taxRateTxt.Text;
//test for an empty string and set it to db null
if (taxStr == String.Empty)
{
    taxStr = DBNull.Value;

}
改变这个

cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));
对此

cmd.Parameters.Add(new SqlParameter("@TaxRate", string.IsNullOrEmpty(taxRateTxt.Text) ? (object)DBNull.Value : taxRateTxt.Text));

传入
Convert.DBNull
(或
DBNull.Value
)即可


当然,您必须首先检查字符串值,然后将其传入。

该列有默认值吗?您的语句
taxStr=DBNull.value
应该会给你一个编译时错误。如果你需要插入null,只需从插入SQL脚本中省略该字段(如果该字段没有默认值)。你能将插入脚本添加到帖子中吗?喜欢将
DBNull.value
转换为
对象
的技巧。节省了这么多时间——)