当前位置: 代码迷 >> J2EE >> SQL在JDBC下执行的有关问题,求大神帮帮忙
  详细解决方案

SQL在JDBC下执行的有关问题,求大神帮帮忙

热度:38   发布时间:2016-04-17 23:20:58.0
SQL在JDBC下执行的问题,求大神帮帮忙
为什么这段SQL在Mysql中正常执行并有结果而在JDBC中却报异常?

SQL代码:

call classm_p_ur_idgeneration_pp(@xx);
select @id as id;


过程代码 :

select @idprev_:=ctprop.`data` from classm_t_propreties ctprop where `key`='user.idgeneration.ad';
set @id_= CONCAT(@idprev_,DATEDIFF(NOW() , '1970-01-01 08:00:00.000'),CEILING(RAND()*100000000000)) ;
set @id:=@id_;

------解决思路----------------------
能打出完整的sql么?
------解决思路----------------------
会不会是 " ; " 的问题呢?
------解决思路----------------------
jdbc执行的是标准的sql ,你这是标准的sql吗
------解决思路----------------------
看起来像存储过程,不是应该调用conn.prepareCall来调用的吗
------解决思路----------------------
将SQL语句改为
select CONCAT(ctprop.data,DATEDIFF(NOW() , '1970-01-01 08:00:00.000'),CEILING(RAND()*100000000000)) 
from classm_t_propreties ctprop where `key`='user.idgeneration.ad';

直接在JDBC中执行这句即可
------解决思路----------------------
我记得存储过程不是这样调用的。
------解决思路----------------------
引用:
Quote: 引用:

看起来像存储过程,不是应该调用conn.prepareCall来调用的吗


这是啥意思啊?这个错.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.mysql.jdbc.CallableStatement.setInOutParamsOnServer(CallableStatement.java:2270)
at com.mysql.jdbc.CallableStatement.executeQuery(CallableStatement.java:952)
at cn.comfan.integer.number.convert.test.NumberConvertorTest.main(NumberConvertorTest.java:47)


数组越界……
------解决思路----------------------
你这个是两条sql语句,第一个是调一个存储过程,第二个是查询,你直接在存储过程里返回不就好了,而且存储过程一般是conn.prepareCall调用的
  相关解决方案