我在我的网站[ASP.net/C#]上使用的SQL更新命令正在保存空格而不是实际文本。
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringUserData"].ConnectionString);
connection.Open();
string updateSQL = "UPDATE userData SET [First Name] = @FirstName , [Last Name] = @LastName , [Display Name] = @DisplayName , [Phone Number] = @PhoneNumber , [Mobile Number] = @MobileNumber , [Date of Birth] = @DoB , AddressNumber = @AddNumber , AddressRoadName = @AddRoad , AddressTown = @AddTown , AddressCity = @AddCity , AddressCounty = @AddCounty , AddressPostCode = @AddPostCode WHERE (ID = @ID)";
SqlCommand update = new SqlCommand(updateSQL, connection);
update.Parameters.AddWithValue("@ID", userID);
update.Parameters.AddWithValue("@FirstName", firstname.Text);
update.Parameters.AddWithValue("@LastName", lastname.Text);
...
update.Parameters.AddWithValue("@AddCounty", addressCounty.Text);
update.Parameters.AddWithValue("@AddPostCode", addressPostCode.Text);
update.ExecuteNonQuery();
connection.Close();
另外,我已经注意到已经写入的值的空白区域在数据库表中看起来像这样:
'username '
答案 0 :(得分:1)
如果您使用具有特定设置长度的CHAR字段,SQL Server将自动使用空格填充文本以满足特定长度。您可以使用SET ANSI_PADDING命令禁用此功能。
我的猜测是,您的字段为空,SQL填充空格值为12个空格以满足您的长度要求。您可以通过以下三种方式之一来解决这个问题。
1)将CHAR(12)字段更改为VARCHAR(12)
2)存储数据时将ANSI_PADDING设置为OFF
3)从数据库中检索数据后TRIM()数据。
做这三件事中的任何一件都应该解决你的问题。
答案 1 :(得分:0)
对文本框中的值使用Trim()
函数以删除空格。
update.Parameters.AddWithValue("@FirstName", firstname.Text.Trim());
update.Parameters.AddWithValue("@LastName", lastname.Text.Trim());
...