求救啊,没遇到过的问题java调用mysql存储过程编码问题
今天用java调用mysql的存储过程.出现了以下错误:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Illegal double '57e488506566' value found during parsing
开始我以为是这个字段的问题,但是后来我发现时里面带中文的原因,我把传进去的中文去掉或者换成字母就没问题,可以确定是编码的问题,但是以前遇到的编码问题大不了就是乱码,编码统一就可以了,而且在数据库中直接call test3();传进中文也没问题就是程序传进去的出问题...这次遇到的问题貌似是在预编译的时候遇到的,"during parsing",这个真不知道怎么办了,google了半天也没个结果...
下面是程序:
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `test3`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test3`(IN str LONGTEXT CHARACTER SET gbk,IN n INT(5))
#批量数据入库
BEGIN
DECLARE i INT(11);
DECLARE len INT(11);
SET i = 1;
SET len = 0;
SET @sqltext = '' ;
SET @sqltemp = '';
WHILE i<=n DO
IF i = 1 THEN
SET @sqltemp = CONVERT(SUBSTR(str,1,LOCATE(';',str,1)-1) USING gbk);
ELSE
SET @sqltemp = CONVERT(SUBSTR(str,len+2,LOCATE(';',str,len+2)-len-2) USING gbk);
END IF;
IF MOD(i,1000) = 1 THEN
SET @sqltext = CONVERT(CONCAT('(',@sqltemp,')') USING gbk);
ELSEIF MOD(i,1000) = 0 THEN
SET @sqltext = CONVERT(CONCAT(@sqltext,',(',@sqltemp,')') USING gbk);
SET @sqltext = CONCAT('insert into taobao_item(iid,detail_url,num_iid,pic_path,num,approve_status,cid,user_id) values ',CONVERT( @sqltext USING gbk));
PREPARE stmt FROM @sqltext;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sqltext = '';
ELSE
SET @sqltext = CONCAT(@sqltext,',(',@sqltemp,')');
END IF;
SET i = i+1;
SET len =len + LENGTH(@sqltemp);
SET @sqltemp = '';
END WHILE;
#处理剩余的插入值
IF @sqltext<>'' THEN
SET @sqltext = CONCAT('insert into taobao_item(iid,detail_url,num_iid,pic_path,num,approve_status,cid,user_id) values',CONVERT(@sqltext USING gbk)) ;
PREPARE stmt FROM @sqltext;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sqltext='';
END IF;
END $$
DELIMITER ;
各位高手啊,我连最后的CHARACTER SET gbk,CONVERT都用上了,没用...弄了大半天了,还望高手们帮帮忙