在SQL Server中插入空文本框值

时间:2013-05-07 05:02:27

标签: c# sql-server-2008

我有一些可以有空值的文本框。当我尝试在insert命令中插入textbox.text时,它在sql中显示错误。我希望文本框为空时自动检查它将在sql server 2008 R2中的数据库中插入null。我使用普通插入命令,我不想使用程序(太笨拙)。 请帮助我。

提前致谢。

3 个答案:

答案 0 :(得分:4)

不确定您的代码,但它应该是:

using (SqlConnection conn = new SqlConnection("ConnectionString"))
using (SqlCommand cmd = new SqlCommand())
{
    cmd.CommandText = "INSERT into yourTable(ID, Col1, Col2) VALUES (@ID, @Col1, @Col2);";
    cmd.Connection = conn;
    conn.Open();
    cmd.Parameters.AddWithValue("@ID", yourID);
    cmd.Parameters.AddWithValue("@Col1", string.IsNullOrWhiteSpace(textBox1.Text) ? 
                                          DBNull.Value: textBox1.Text);
    cmd.Parameters.AddWithValue("@Col2", string.IsNullOrWhiteSpace(textBox2.Text) ?
                                          DBNull.Value : textBox2.Text);
    cmd.ExecuteNonQuery();
}

您可以使用string.IsNullOrWhiteSpace检查空字符串,并相应地传递null。如果要将空格视为有效值,请使用string.IsNullOrEmpty()

答案 1 :(得分:1)

如果您使用直接插入查询

"insert into table_name (column1,column2,column3) values("+column1value+","+column2value+","+textbox.Text.Trim()!=""?textbox.Text.Trim():DBNull.Value+")";

即使您使用参数化查询,也可以使用相同的表达式

textbox.Text.Trim()!=""?textbox.Text.Trim():DBNull.Value

答案 2 :(得分:0)

尝试这样的事情:

using (SqlConnection conn = new SqlConnecction(connStr))
{
    conn.Open();
    string qry = "INSERT TargetTable (TargetColumn) VALUES (@TextValue)";
    using (SqlCommand cmd = new SqlCommand(qry, conn))
    {
        cmd.Parameters.Add(new SqlParameter("@TextValue", String.IsNullOrEmptyOrWhiteSpace(textBox.Text) ? DBNull.Value : textBox.Text));
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (SqlException sex)
        {
            // whatever
        }
    }
}