在 Spring 中有一个如下配置的数据源。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${prop_jdbc.driverClassName}"/>
<property name="url" value="${prop_jdbc.url}"/>
<property name="username" value="${prop_jdbc.username}"/>
<property name="password" value="${prop_jdbc.password}"/>
<property name="initialSize" value="2"/>
<property name="maxActive" value="5"/>
<property name="maxIdle" value="2"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxOpenPreparedStatements" value="-1"/>
<!-- property name="defaultAutoCommit">
<value>false</value>
</property-->
</bean>
现在,我首先使用从上面的数据源创建的 jdbcTemplate 进行 DROP TABLE,然后在下一个语句中,我再次创建相同的 TABLE,最后尝试在第三个语句中立即 DROP 它。
jdbcTemplate.update( dropSql,new Object[] { });
jdbcTemplate.update( createSql,new Object[] { });
jdbcTemplate.update( dropSql,new Object[] { });
在@Brian 评论后编辑
在第一条语句之后,表立即被删除,第二条语句也立即创建它,但第二次,DROP 没有发生..也没有错误..
JdbcTemplate 是否立即或定期执行 DROP,因为这很难理解,使用相同的数据源为什么不发生第二次 DROP 时第一次发生 2 行之前..?