sql中的varchar创建额外的空格

时间:2017-10-13 01:05:07

标签: c# mysql sql-server

好吧,我正在用C#构建一个小的业余爱好程序,我正在尝试将程序中的信息写入Sql

问题是我在Sql中有一些varchar字段,最大长度为50 当我发送信息填充这些列时,他们将添加额外的空间,直到达到50个字符

我已经尝试将varchar更改为nvarchar,只是为了查看它是否有效

我一直在研究的是nchar做了这种事情,但是varchar我不应该有问题但是我有问题。

public PersonModel CreatePerson(PersonModel model)
{
    using (IDbConnection connection =
        new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db)))
    {
        var p = new DynamicParameters();
        p.Add("@FirstName", model.FirstName);
        p.Add("@LastName", model.LastName);
        p.Add("@EmailAddress", model.EmailAddress);
        p.Add("@CellphoneNumber", model.CellphoneNumber);
        p.Add("@id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);

        connection.Execute("dbo.spPeople_Insert", p, commandType: CommandType.StoredProcedure);
        model.Id = p.Get<int>("@id");

        return model;
    }
}

这就是我怎么称呼它

    if (ValidateForm())
    {
        PersonModel p = new PersonModel();
        p.FirstName = firstNameValue.Text;
        p.LastName = lastNameValue.Text;
        p.EmailAddress = emailValue.Text;
        p.CellphoneNumber = cellphoneValue.Text;

这些是我的表单中的文本框btw

3 个答案:

答案 0 :(得分:0)

根据Microsoft 您需要设置SET ANSI_PADDING OFF
请注意,只更改新设置

,不会影响现有列

答案 1 :(得分:0)

你几乎无法检查的事情

检查存储过程参数以确保它们也是nvarchar,因为列类型在nvarchar

并且作为Cyber​​ Progs状态检查ANSI_PADDING

SET ANSI_PADDING  OFF

答案 2 :(得分:0)

在将数据传递到数据库时在代码中使用修剪。

例如:p.Add("@FirstName", model.FirstName.Trim());