为啥这段SQL在Mysql中正常执行并有结果而在JDBC中却报异常?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥这段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_;
经过久久的尝试 , 终于得出结果. jdbc执行的是普通SQL的批量发送,但是对于 过程需要用Callable , 而且有out参数一次只能执行一个并返回。谢谢热心网友。在MyBatis普通SQL中执行不能带有out的过程。

参考技术A jdbc和连接池对于你这个场景来说,都足够,既然用spring管理了,建议还是使用连接池,另外,spring自身没有实现连接池,一般都是对第三方连接池的包装,常见的有C3P0,dbcp以及最近比较流行的boneCP等,这几个配置都差不多太多,以boneCP为例:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
destroy-method="close">
<property name="driverClass" value="$jdbc.driverClass" />
<property name="jdbcUrl" value="$jdbc.url" />
<property name="username" value="$jdbc.user" />
<property name="password" value="$jdbc.password" />
<property name="idleConnectionTestPeriod" value="60" />
<property name="idleMaxAge" value="240" />
<property name="maxConnectionsPerPartition" value="30" />
<property name="minConnectionsPerPartition" value="10" />
<property name="partitionCount" value="2" />
<property name="acquireIncrement" value="5" />
<property name="statementsCacheSize" value="100" />
<property name="releaseHelperThreads" value="3" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
参考技术B 你这个事 存储过程吧,具体错误是什么?追问

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.mysql.jdbc.CallableStatement.setInOutParamsOnServer(CallableStatement.java:2270)

本回答被提问者采纳

MySQL中为啥不能在select语句中使用into将查询结果存入新表,但是SQL sever可以

参考技术A declare n number(吧); begin for n in 依..依00 loop insert into test_table(id, name) values(n,'你想插入的数据'); end loop; commit; end

以上是关于为啥这段SQL在Mysql中正常执行并有结果而在JDBC中却报异常?的主要内容,如果未能解决你的问题,请参考以下文章

为啥mssql的OPENQUERY取oracle某表时只返回了一行数据,而在pl/sql中可以查到表中有两行数据,求解答?

C++写的这段语句是怎么执行的?

为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?

为啥mybatis生成的sql语句可以正确执行,但是返回结果却为空

这段python代码测试时,为啥会报错?从测试看,是编码的问题,一有中文输出结果,网页就无法显示结果。

在shell脚本执行sql语句为啥会报错