C# sql中的Varchar创建额外的空白

C# sql中的Varchar创建额外的空白,c#,mysql,sql-server,C#,Mysql,Sql Server,嗯,我正在用C#构建一个小的业余爱好程序,并试图将程序中的信息写入Sql 问题是我在Sql中有一些varchar字段,最大长度为50 当我发送信息来填充这些列时,它们将被添加额外的空间,直到达到50个字符 我已经尝试将varchar更改为nvarchar,只是想看看它是否有效 我一直在研究的是,nchar做这种事情,但是使用varchar我不应该有问题,但我有问题 public PersonModel CreatePerson(PersonModel model) { using (ID

嗯,我正在用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;
    }
}
这些是我表格中的文本框,顺便说一句,根据 您需要设置
设置ANSI\u PADDING OFF


请注意,更改设置不会影响现有列,只会影响新列

您可以实际检查的内容很少

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

当Cyber Progs州检查ANSI_填充时

SET ANSI_PADDING  OFF

在向数据库传递数据时,在代码中使用trim


例如:p.Add(“@FirstName”,model.FirstName.Trim())

在将值发送到SQL数据库之前,对您的
string
值调用
Trim()
。传递这些值时没有空格,因为我正在与调试人员进行检查。如何检查列值是否有额外的空格?SQLL中的ltrim和rtrim函数您可以共享将数据保存到数据库的代码吗?另外,我相信您已经这样做了,但我建议重新检查列的数据类型如果我必须设置ansi_padding off,那么nchar和varchar之间的区别是什么?如果您是指char和varchar之间的区别,这里有一篇文章解释它在不同设置下的工作原理!不用于将varchar转换为nvarchar。请阅读如何在堆栈溢出链接中添加好答案以提供最佳反馈:
SET ANSI_PADDING  OFF