好吧,我正在用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
答案 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());