SQL Update命令保存空格而不是文本

时间:2014-04-09 16:50:47

标签: c# sql

我在我的网站[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    '

2 个答案:

答案 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());
...