文本字段字符串在c#中被截断
本文关键字:字段 字符串 文本 | 更新日期: 2023-09-27 18:03:48
我知道c#中的字符串类型可以保存长字符串,所以为什么当我从asp.net表单传递文本时,在该字符串变量中,文本实际上被剪切。
当我跟踪代码时,我可以在文本可视化器中看到整个长字符串在那里,但在运行代码后,我可以看到这个字符串变量数据在MySQL数据库中被切成两半。MySQL的列大小是TEXT,最多可以容纳4gb。
所以我想知道是否有人知道这个字符串截断是怎么回事。
TEXT的最大长度为65,535个字符。如果您的内容超过64K字节,则可能超出了字段字符的限制。
要进行测试,您可以将字段类型更改为MEDIUMTEXT或LONGTEXT
根据MySQL docsc TEXT字段最多保留L + 2字节,其中L <2 ^ 16。-> http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html
如果一个字符占用2字节,则最大大小为~32.7k字符。
http://www.electrictoolbox.com/maximum-length-mysql-text-field-types/
TEXT数据类型也能够存储比VARCHAR和CHAR文本类型,所以在存储时需要使用text类型数据库中的网页或类似内容。
每种数据类型可存储的最大数据量为:
TINYTEXT 256字节
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
在大多数情况下TEXT类型可能就足够了,但是如果您正在编写内容对于管理系统,最好使用MEDIUMTEXT类型更长的页面,以确保没有数据大小限制的问题。
更新:SqlParameter。Size(我假设MySQL也是如此)可以在将字符串发送到DB之前剪切字符串内容。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.size.aspx用于可变长度类型(nvarchar, For)的输出参数(示例),参数的大小定义了缓冲区的大小保持输出参数。输出参数可以被截断为用size指定的大小。对于字符类型,指定的大小
如果没有显式设置,则从的实际大小推断指定的参数值。
因此删除设置ADO的Size参数的代码。NET参数或尝试将其设置为int。马克思价值。