我知道c#中的字符串类型可以包含一个长字符串,所以为什么当我从asp.net表单传递文本时,在该字符串变量中,文本实际上是被剪切的。
当我浏览代码时,我可以在文本可视化工具中看到整个长字符串在那里但是在运行代码之后我可以看到这个字符串变量数据在MySQL数据库中减少了一半。 MySQL中的列大小为TEXT,最多可容纳4 GB。
所以我想知道是否有人知道这个字符串截断会发生什么。
答案 0 :(得分:3)
TEXT最多包含65,535个字符。如果您的内容超过64K字节,则可能超出了字段字符的限制。
要对此进行测试,您可以将字段类型更改为MEDIUMTEXT或LONGTEXT
答案 1 :(得分:1)
根据MySQL dosc TEXT字段最多可保持L + 2个字节,其中L <1。 2 ^ 16。 - &GT; http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html
如果一个char占用2个字节,则最大大小为~32.7k chars。
答案 2 :(得分:0)
http://www.electrictoolbox.com/maximum-length-mysql-text-field-types/
TEXT数据类型也能够存储比VARCHAR和更多的数据 CHAR文本类型,因此TEXT类型是存储时需要使用的类型 网页或数据库中的类似内容。
每种数据类型中可存储的最大数据量为 如下:
TINYTEXT 256字节
TEXT 65,535字节~64kb
MEDIUMTEXT 16,777,215字节~16MB
LONGTEXT 4,294,967,295字节~4GB
在大多数情况下 TEXT类型可能已足够,但如果您正在编写内容 管理系统最好使用MEDIUMTEXT类型 更长的页面,以确保数据大小限制没有问题。
更新:SqlParameter.Size(我认为是相同的)可以在将字符串内容发送到数据库之前剪切字符串内容。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.size.aspx
对于具有可变长度类型的输出参数(nvarchar,for 例如),参数的大小定义了缓冲区的大小 保持输出参数。输出参数可以截断为 用Size指定的大小。对于字符类型,指定的大小 大小以字符为单位。
如果没有明确设置,则从实际大小推断出大小 指定的参数值。
因此,删除设置ADO.NET参数的Size参数的代码或尝试将其设置为int.Max值。