天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 2106|回复: 0

[排错] 长中文字符存储数据库中,自动被截取255长度问题【字符串被截取-源码】

[复制链接]
shary 发表于 2011-12-13 14:07:27 | 显示全部楼层 |阅读模式
本帖最后由 bess 于 2012-12-10 10:48 编辑

Q:  问题描述:
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addStringItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);

如果newdoc对象StringItem属性设置长度超过255个中文字符。在存储数据库的时候会自动截取只留255个中文字符。
例如上面的代码。如果"考核标准"设置过长,超过255个中文字符。就回自动截取只剩下前255个中文字符。


问题原因:
我查到在源码中Item.java类中的getVarcharvalue() 对字符窜长度进行了截取。如下:
           /**
         * :
         * @return
         * @uml.property name="varcharvalue"
         */
        public String getVarcharvalue() {
                if (getType().equals(VALUE_TYPE_VARCHAR)) {
                        if (varcharvalue != null && varcharvalue.length() > 255) {
                                return varcharvalue.substring(0, 255);
                        } else {
                                return varcharvalue;
                        }               
                                } else if (getType().equals(VALUE_TYPE_NUMBER)) {
                        Double num = getNumbervalue();
                        return num != null ? DECIMAL_FORMAT.format(num) : "";
                } else if (getType().equals(VALUE_TYPE_DATE)) {
                        Date dt = getDatevalue();
                        if (dt != null) {
                                return DATE_FORMAT.format(dt);
                        }
                } else if (getType().equals(VALUE_TYPE_TEXT)) {
                        return getTextvalue();
                }
                return null;
        }

解决方法提问:
1、平台getVarcharvalue() 方法为什么对字符窜长度进行了截取?
2、我这边的软件只连接sql或oracle。如果想把截取改长。最长能改为多少?

A:您好,您好如下代码改为:
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addStringItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);

应该用
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addTextItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);

原帖子作者 zyzma  原帖子链接:
http://www.teemlink.com/bbs/view ... 26amp%3Btypeid%3D12

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 12:25

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表