当前位置: 代码迷 >> J2EE >> ,用SSH向mysql插入数据的时候报Data too long for.
  详细解决方案

,用SSH向mysql插入数据的时候报Data too long for.

热度:157   发布时间:2016-04-22 01:37:58.0
在线等,急!用SSH向mysql插入数据的时候报Data too long for...
表为 tbl_xx省_xx类型,每个省份,类型一张表,很多张表,所以采用存储过程方式进行操作。
在用户修改一条记录时候,会备份数据到log表中,在update时候出错,insert into log没问题。
dao:
Java code
public void updateMerchant(Merchant m,String province,String type) {        Query query = this.getSession().getNamedQuery("updateMerchant");        query.setLong(0, m.getClId());        query.setString(1, m.getClName());        query.setString(2, m.getClCity());        query.setInteger(3, m.getClCategory());        query.setString(4, m.getClDetailaddress());        query.setString(5, m.getClNormaladdress());        query.setString(6, m.getClTelephone());        query.setDouble(7, m.getClLongitude());        query.setDouble(8, m.getClLatitude());        query.setString(9, m.getClTraffic());        query.setString(10, m.getClDescription());        query.setLong(11, m.getClImageid());        query.setInteger(12, m.getClRank());        query.setString(13, province);        query.setString(14, type);        query.executeUpdate();    }

action:
Java code
public String updateMerchant() throws Exception {        try {            //根据ID所查找出来的商家对象            Merchant merchant = (Merchant) ActionContext.getContext()                    .getSession().get("merchant");            //省份拼音转换,将省份拼音放入数据路,例如江苏省==jiangsu            String provinceSpell = ActionContext.getContext().getSession()                    .get(province).toString();            //登陆的用户            User user = (User) ActionContext.getContext().getSession()                    .get("user");            //将省份拼音和商家类型放入session,更改后重新查询            ActionContext.getContext().getSession().put("province", provinceSpell);            ActionContext.getContext().getSession().put("bigtype", bigtype);            m.setClTime(merchant.getClTime());            //m为struts2 动态封装页面对象            service.updateMerchant(m, provinceSpell, bigtype);            //将M表中的数据插入到mlog表中备份            mLog.setClName(merchant.getClName());            mLog.setClCity(merchant.getClCity());            mLog.setClCategory(merchant.getClCategory());            mLog.setClDetailaddress(merchant.getClDetailaddress());            mLog.setClNormaladdress(merchant.getClNormaladdress());            mLog.setClLongitude(merchant.getClLongitude());            mLog.setClLatitude(merchant.getClLatitude());            mLog.setClTraffic(merchant.getClTraffic());            mLog.setClDescription(merchant.getClDescription());            mLog.setClTime(merchant.getClTime());            mLog.setClTelephone(merchant.getClTelephone());            mLog.setClProvince(provinceSpell);            mLog.setClType(bigtype);            mLog.setClMerchantId(m.getClId());            mLog.setClUserId(user.getClId());            //保存数据至数据库            service.copyMerchantLog(mLog);            } catch (Exception e) {                e.printStackTrace();                return ERROR;            }        ActionContext.getContext().getSession().put("msg", "<script>alert('修改成功')</script>");        return SUCCESS;    }

存储过程:
SQL code
DELIMITER $$DROP PROCEDURE IF EXISTS `sp_updatemerchant` $$CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_updatemerchant`(in id bigint(20),in name varchar(45),in city varchar(45),in category int(11),in detailaddress varchar(45),in normaladdress varchar(45),in telephone varchar(45),in longitude double,in latitude double,in traffic text,in description text,in imageid bigint(20),in rank int(11),in province varchar(45),in type VARCHAR(45))BEGINSET @sqltext = concat('update tbl_',province,'_',type,' set  cl_name=\'',name,'\', cl_city=\'',city,'\', cl_category=',category,',cl_detailaddress=\'',detailaddress,'\',cl_normaladdress=\'',normaladdress,'\',cl_telephone=\'',telephone,'\',cl_longitude=',longitude,',cl_latitude=',latitude,',cl_traffic=\'',traffic,'\',cl_description=\'',description,'\',cl_imageid=',imageid,',cl_rank=',rank,' where cl_id =',id,';');PREPARE sqlstr from @sqltext;Execute sqlstr;END $$DELIMITER ;
  相关解决方案