日期:2014-05-19  浏览次数:20421 次

保存到数据库时截断字段的错误该如何处理?立即揭帖!
问题描述:  
页面上有个textBox,对它的长度分别进行了前台和后台的验证,比如长度不能超过500,可是对于textBox的换行,在保存到数据库时也进行保存,所以,即使我的长度不超过500,可是保存时还是有错误提示说数据库溢出?

请问这个问题如何解决?
多谢!

------解决方案--------------------
難道是在資料庫中的長度設置沒夠?
------解决方案--------------------
如果数据库限定了500,那么就要把回车等字符算上,而且如果有htmlencode等方法转换过了,要判断转换后的字符的总数不要超过500
------解决方案--------------------
同意楼上的,回车的话实际上也是有几个字符组成的不过在html并不显示出来,你如果要存到数据库里面在取出来的话,你就可以看到了,这些也要算进入的。
------解决方案--------------------
楼上不是说了吗。htmlencode 转换,然后判断长度是否大于500,不过这样有效字符就不到500了,或许有很多 回车 换行等字符也算在内了。
如果数据库的字段类型允许改,把数据类型改成text就可以了,不能改就处理你的输入字符串吧, 把特殊字符都处理掉
------解决方案--------------------
晕倒,不能直接用Length呀,看看下面的示例

string sString = "大家好sdafa ";
int charCount = System.Text.Encoding.Default.GetByteCount(sString.ToCharArray());
return charCount.ToString();
------解决方案--------------------
int count=Server.HtmlEncode(事由).Length;
if(System.Text.Encoding.Default.GetByteCount(事由.Text.Trim().ToCharArray())> 500)
{
d8zone20.WebPage.Alert.AlertOnly(this, "事由500字以内! ");
return false ;
}

刚才多了个;
------解决方案--------------------
上面的代码判断本来就没用htmlEncode阿,你的判断this.T_事由.Text.Trim().Length> 500使用了吗?应该判断count> 500 才算使用了
------解决方案--------------------
if(System.Text.Encoding.Default.GetByteCount(textbox1.Text.Trim()) > 500)
{
}
------解决方案--------------------
数据库字段类型改成text,或者把长度比你判断的值500再适当大点
------解决方案--------------------
if(System.Text.Encoding.Default.GetByteCount(textbox1.Text.Trim()) > 500)
------解决方案--------------------
一个回车相当于两个字符的长度