【问题标题】:Space character at the end of a string when saving to the database保存到数据库时字符串末尾的空格字符
【发布时间】:2012-06-24 12:36:07
【问题描述】:

我的表中有一个nvarchar(50) 字段。例如,当我使用12 character Length 保存字符串时,它会使用50 character length 保存字符串。实际上它在字符串的末尾添加了一个空格字符。我应该选择其他数据类型吗?

tmp_Person.NameFamily = txt_NameFamily.Text.Trim();
PersonKBBSHDataContext.PersonInfos.InsertOnSubmit(tmp_Person);
PersonKBBSHDataContext.SubmitChanges();

当我在表的NameFamily 字段中直接保存一个字符串(在SQL Server 中)时,一切都很好。

【问题讨论】:

  • 在将文本框值分配给名称之前,您不能在文本框值上使用 .Trim() 吗?
  • 这里肯定有其他问题。如果您有一个 12 字符的字符串并将其保存到 nvarchar(50),则数据库不应在末尾添加带有空格的填充。仔细检查您是否真的保存到 nvarchar(50) 列。
  • tmp_Person.NameFamily.dbml 中是string (System.String),问题是在我发送字符串以保存在数据库中之后。我正在保存到 nvarchar(50) 列。
  • 错误来自.dbml' file, with re add table to dbml` 一切正常

标签: c# linq sqldatatypes


【解决方案1】:

我有同样的问题。从 Mapping 类的 Nvarchar 属性中删除 .IsFixedLength() ,我的问题就解决了。

Me.Property(Function(t) t.Description).IsFixedLength().HasMaxLength(500)

替换为

Me.Property(Function(t) t.Description).HasMaxLength(500)

【讨论】:

  • 遇到了同样的问题。必须在 .edmx 文件中将其修复,将相关 EntityType 中的属性设置为 FixedLength 属性为 false。出现问题是因为该列首先设置为nchar
【解决方案2】:

如果使用实体框架,请将您的 NVarchar 字段上的 Fixed Length 属性设置为 true

您仍然可以使用Trim,但这只是“修复”textBox.Text 的值,与数据库无关。

【讨论】:

    【解决方案3】:

    我发现了问题。我刚刚在.dbml 文件中再次添加了我的表,一切正常。

    【讨论】:

      【解决方案4】:

      使用这个Trim(txt_NameFamily.Text)

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 2013-09-11
        • 2016-05-23
        • 2018-12-04
        • 2015-09-21
        相关资源
        最近更新 更多