从 .net 类型的数据集插入时,备注字段值被截断为大约 1000 个字符

Posted

技术标签:

【中文标题】从 .net 类型的数据集插入时,备注字段值被截断为大约 1000 个字符【英文标题】:Memo field value truncated to about 1000 characters when inserted from a .net typed dataset 【发布时间】:2012-01-25 18:18:21 【问题描述】:

我在此处发布此内容是因为我在互联网上找不到任何有关此内容的信息。我希望它不会过于本地化。

我有一个使用 Access 数据库的 asp.net 网站。在网站中,我有一个类型化的 DataSet,它从包含一个备注字段的表中检索信息。数据库中的信息是正确的红色。

当需要写回数据库(INSERT 或 UPDATE)时,memo 字段的值似乎被截断为略多于 1000 个字符。

我跟踪了我的应用程序的执行,并且在我调用MyDataAdapter.Update(MyDataSet) 之前,DataSet 中的值没有被截断(调用之后也没有截断)。但是该值在数据库中被截断。

这是怎么回事?

【问题讨论】:

我现在也被这个问题所困扰。每个人都指向这篇文章:allenbrowne.com/ser-63.html 但它并没有解决使用 OLEDB 以编程方式(C#)插入备忘录字段的问题。有人推测,如果第一个条目的宽度小于 256,它会假定所有的长度并截断。这不适合我。我的第一个备忘录记录是 780,当 Access DB 写入发生时,它被截断为 382。 【参考方案1】:

在没有具体查看和测试的情况下,我会查看列定义,因为表在连接后被关闭。每列都有自己的数据类型(数字、整数、文本等)。在基于字符的列上,“MaxLength”的列级别有一个属性。我不知道这是否可以设置为 1024 的以 2 为底的倍数,这就是为什么它看起来像“略多于 1000 个字符”的原因。

如果是这种情况,我会尝试以下方法,将 MaxWidth 更改为更大的值... 2048、4096、10000 等等。

【讨论】:

我刚刚再次检查,Access 中的 meme 字段上没有 MaxWidth 属性。我在我的项目中检查了键入的 DataSet,MaxLength 值设置为 -1,这应该意味着“没有限制”。

以上是关于从 .net 类型的数据集插入时,备注字段值被截断为大约 1000 个字符的主要内容,如果未能解决你的问题,请参考以下文章

在报告打印预览中或打印时,备注字段被截断

Twitter api 文本字段值被截断

十进制值被 to_f 截断

MySql 数据在第 1 行截断列“值”

sql怎么插入日期类型数据报将截断字符串或二进制数据

VB.NET 数据类型不匹配,数据输入过长