提交空格

时间:2014-05-08 17:32:47

标签: c# asp.net sql visual-studio-2010 sql-server-2008

我有一个Web应用程序asp.net Web表单。提交表单后,一切顺利,但是当我回复表单时,提交时空白的任何文本框都保存在数据库中给出的值。

示例:如果textbox1在数据库中有“varchar(10)”并且我在textbox1中没有提交我的表单,当我检索我的表单时,textbox1将包含10个空格。

这是我用于插入的代码示例:

    string Connectionstring = ConfigurationManager.ConnectionStrings["Conn"].ToString();
    SqlConnection objConnection = new SqlConnection(Connectionstring);
    SqlDataAdapter cmd = new SqlDataAdapter();

    objConnection.Open();

    //Command Insert
    cmd.InsertCommand = new SqlCommand("INSERT INTO T_Table Values(@Textbox1);", objConnection);

    cmd.InsertCommand.Parameters.Add("@Textbox1", SqlDbType.NChar).Value = Textbox1.Text;

    cmd.InsertCommand.ExecuteNonQuery();

    //Close connection
    objConnection.Close();

这是我如何检索它:

    string Connectionstring = ConfigurationManager.ConnectionStrings["Conn"].ToString();
    SqlConnection objConnection = new SqlConnection(Connectionstring);

    objConnection.Open();               
    SqlCommand sqlCmd = new SqlCommand("SELECT Textbox1 FROM T_Table WHERE this = '" + this.Text + "'", objConnection);
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
    sqlCmd.Parameters.AddWithValue("@Textbox1", Textbox1.Text);

    dt1.Clear();
    sqlDa.Fill(dt1);

    if (dt1.Rows.Count > 0)
    {
        Textbox1.Text = dt1.Rows[0]["Textbox1"].ToString();
    }
    objConnection.Close();

2 个答案:

答案 0 :(得分:0)

您不希望将空值插入数据库。如果文本框为空,则插入NULL值。你可以这样做..

if(!string.IsNullOrWhiteSpace(Textbox1.Text))
{
    cmd.InsertCommand.Parameters.AddWithValue("@Textbox1" DBNull.Value);
}
else
{
    cmd.InsertCommand.Parameters.AddWithValue("@Textbox1", Textbox1.Text.Trim());
}

DBNull.Value将'NULL'插入数据库。

您还需要更改插入语句以使用AddWithValue,如上所述。我有点惊讶intellisense并没有告诉你Add是过时的。现在,当您将值返回到文本框时,您应该没有任何问题。

希望这会让你朝着正确的方向前进。

答案 1 :(得分:0)

即使它是数据库中的VARCHAR,看起来你将它添加为CHAR:

cmd.InsertCommand.Parameters.Add("@Textbox1", SqlDbType.NChar).Value

不应该是以下情况吗?

cmd.InsertCommand.Parameters.Add("@Textbox1", SqlDbType.NVarChar).Value