我有一个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();
答案 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