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

本文关键字:文本 空白 Update 命令 保存 SQL | 更新日期: 2023-09-27 17:57:47

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

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

对文本框中的值使用Trim()函数来删除空白。

update.Parameters.AddWithValue("@FirstName", firstname.Text.Trim());
update.Parameters.AddWithValue("@LastName", lastname.Text.Trim());
...

如果使用具有特定设置长度的CHAR字段,SQL Server将自动在文本中添加空格以满足特定长度。可以使用SET ANSI_PADDING命令禁用此功能。

我的猜测是,您的字段是空白的,SQL正在用12个空格填充空白值以满足您的长度要求。你可以用三种方法中的一种来解决这个问题。

1) 将CHAR(12)字段更改为VARCHAR(12)

2) 存储数据时,将ANSI_PADDING设置为OFF

3) TRIM()从数据库中检索数据后对其执行操作。

做这三件事中的任何一件都可以解决你的问题。