设为首页 收藏本站
查看: 685|回复: 0

[经验分享] 奇怪,向mysql插入数据部分会出现Data truncated for column 错误

[复制链接]

尚未签到

发表于 2016-10-24 06:52:21 | 显示全部楼层 |阅读模式
使用框架:hibernate+spring+webwork+freemark

程序部分:
public String UpInaccExcel() throws Exception
{
message="";
if (!hasPermission(PermConst.INACC_BATCHADD)) {
message = "抱歉,您无该操作的权限!";
return Constant.NOT_AUTHORIZE;
}
if(inaccFile == null)
{
message="请选择要上传的Excel文件";
return INPUT;
}
else
{
try{
  Workbook wb = Workbook.getWorkbook(inaccFile);
  Sheet sheet = wb.getSheet(0);
  //总行数
  int  count  =  sheet.getRows();
  //取出标题
              String a1  =  sheet.getCell( 0 , 0 ).getContents().trim();
              String a2  =  sheet.getCell( 1 , 0 ).getContents().trim();
              String a3  =  sheet.getCell( 2 , 0 ).getContents().trim();
              String a4  =  sheet.getCell( 3 , 0 ).getContents().trim();
              String a5  =  sheet.getCell( 4 , 0 ).getContents().trim();
              String a6  =  sheet.getCell( 5 , 0 ).getContents().trim();
              String a7  =  sheet.getCell( 6 , 0 ).getContents().trim();
              String a8  =  sheet.getCell( 7 , 0 ).getContents().trim();
              String a9  =  sheet.getCell( 8 , 0 ).getContents().trim();
              String a10  =  sheet.getCell( 9 , 0 ).getContents().trim();
              
              if(a1.equals("所在仓库") && a2.equals("品牌")&& a3.equals("产品大类")
              && a4.equals("配件编号")&& a5.equals("配件名称") && a6.equals("配件规格")&& a7.equals("仓位")
              && a8.equals("配件数量")&& a9.equals("配件单价")&& a10.equals("配件金额"))
              {
              for ( int  i  =   1 ;i  <  count;i ++ ){
              
              try{
                      Cell[] cells  =  sheet.getRow(i);
                      System.out.println(cells[ 0 ].getContents()
                               + cells[ 1 ].getContents() + cells[ 2 ].getContents()
                               + cells[ 3 ].getContents() + cells[ 4 ].getContents()
                               + cells[ 5 ].getContents() + cells[ 6 ].getContents()+ "---"+Double.parseDouble(cells[ 9 ].getContents())+"---

-"+StringUtil.MySubstring(cells[ 5 ].getContents(),100));
                String scope = "storageName=?";
              Collection paras = new ArrayList();
              paras.add(cells[ 0 ].getContents());
                      Storage tmpstroage = this.storageService.GetInfo(scope, paras);
                      if(tmpstroage!=null){
                      Inaccessories tempinacc = new Inaccessories();
                      tempinacc.setStorage(tmpstroage);
                      tempinacc.setInBrand(StringUtil.MySubstring(cells[ 1 ].getContents(),50));
                      tempinacc.setInProducts(StringUtil.MySubstring(cells[ 2 ].getContents(),50));
                      tempinacc.setInAccNo(StringUtil.MySubstring(cells[ 3 ].getContents(),50));
                      tempinacc.setInAccName(StringUtil.MySubstring(cells[ 4 ].getContents(),100));
                      tempinacc.setInAccStandards(StringUtil.MySubstring(cells[ 5 ].getContents(),100));
                      tempinacc.setInPhysicsSort(StringUtil.MySubstring(cells[ 6 ].getContents(),400));
                      tempinacc.setInSortNum(Integer.parseInt(cells[ 7 ].getContents().trim()));
                      tempinacc.setInAccPrice(Double.parseDouble(cells[ 8 ].getContents().trim()));
                      tempinacc.setInAmount(Double.parseDouble(cells[ 9 ].getContents().trim()));
                      tempinacc.setInCreateDate(new Date());
                      tempinacc.setInOperator(getSessionAccount().getName());
                      tempinacc.setInSatus(0);
                     this.inaccessoriesService.save(tempinacc);
                 }
                     else
                     {
                  inaccFile=null;
                message="已经成功上传前"+(i-1)+"条数据,第"+i+"的仓库不存在请先添加仓库!";
                ToUrlPath="inAccHistory.do";
                return SUCCESS;
                     }
            }
              catch(Exception ex)
            {
                  inaccFile=null;
                  System.out.print(ex.getMessage());
                message="已经成功上传前"+(i-1)+"条数据,请检查第"+i+"以后的数据是否完整、是否按格式!";
                ToUrlPath="inAccHistory.do";
               
                return SUCCESS;
           
            }
                  }
      wb.close();
      inaccFile=null;
      message="成功上传"+(count-1)+"条数据";
      ToUrlPath="inAccHistory.do";
      return SUCCESS;

              }
              else
              {
      wb.close();
      inaccFile=null;
              message="请检查信息是否按格式。";
  return INPUT;
            
              }
  
}
catch(Exception ex){
inaccFile=null;
message="上传失败!请检查上传的文件是否为excel格式、信息是否完整、是否按格式、且大小是否超过1兆。"+ex.toString();
return INPUT;
}
}
}
                                 
插入的excel数据                                      
所在仓库 品牌       产品大类 配件编号  配件名称 配件规格 仓位 配件数量 配件单价 配件金额
超人产品仓 超人小家电 剃须刀 60004 超人剃须刀SA22 旋转式1刀头 前台 1 16.64 76.18
超人产品仓 超人小家电 剃须刀 60002 超人剃须刀SA96 浮动旋转双刀头 前台 2 38.09 76.18
超人产品仓 超人小家电 剃须刀 60005 超人剃须刀SA90 旋转式2刀头   前台 1 41.34 41.34
超人产品仓 超人小家电 剃须刀 60006 超人剃须刀SA851 旋转式3刀头 前台 1 62.14 62.14
超人产品仓 超人小家电 剃须刀 60007 超人剃须刀SA851 浮动式双头 前台 2 64.74 129.48
                                   
                                 
第一,二条数就会出错以下错误.其它数据不会出错这样的错误                                
Hibernate operation: could not insert: [com.equipment.vo.Inaccessories]; uncategorized SQLException for SQL [insert into equipment.inaccessories

(In_SortageID, In_AccNo, In_Brand, In_Products, In_AccName, In_PhysicsSort, In_AccStandards, In_CreateDate, In_SortNum, In_Batch, In_AccPrice, In_Amount,

In_Operator, In_Satus, In_ReviewTime, In_ReviewOperator) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [01004]; error code [0]; Data

truncation: Data truncated for column 'In_Amount' at row 1

我试过把配件金额那列的数据都改成76.18都会有这样的问题.其实数据就不会. 不知道为什么,也很奇怪.请问谁遇到过这样的问题,如何解决的.先在这谢过大家啦!

我的In_Amount是类型是double的.数据库里的类型是decimal(10,2)

经查明:
decimal(10,2)对应double时是有问题存在.原因不明.知道的朋友补充一下
我把类型改成double(10,2)时就解决了!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-290388-1-1.html 上篇帖子: MySQL中存储过程和触发器的优缺_转 下篇帖子: 小施手段,让HIBERNATE支持求方差标准差的MYSQL函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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