java.sql.SQLException:您无法使用autocommit set回滚

时间:2016-11-24 13:42:32

标签: java sql jdbc jboss jboss-eap-6

我的项目有问题。当我使用库建立与数据库的连接时,会出现问题。

此库包含以下代码:

PreparedStatement stmt = null;
try {
    con.setAutoCommit(true);
    stmt = con.prepareStatement(this.sqlIniBD);
    stmt.setString(1, id);
    stmt.executeUpdate();
} catch (Throwable t) {
    if (this.tavi.activo()) this.tavi.escribir(toString(), "No se ha podido insertar la fila inicial para las claves de encriptacion (" + id + "). Posiblemente ya existe: " + t);
}

我想问你,如果有可能将autoCommit(false)放在我的standalone.xml中。也许这很奇怪或很愚蠢。这是数据源,例如:

<datasource jta="false" jndi-name="java:/xxx" pool-name="xxx" enabled="true" use-ccm="false">
    <connection-url>jdbc:oracle:thin:@oradag.cm.es:1524:oradag1</connection-url>
    <driver-class>oracle.jdbc.OracleDriver</driver-class>
    <connection-property name="autoCommit">
        <!-- not working -->false 
    </connection-property>
    <driver>ojdbc7.jar</driver>
    <security>
        <user-name>xxx</user-name>
        <password>xxx</password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <timeout>
        <set-tx-query-timeout>false</set-tx-query-timeout>
        <blocking-timeout-millis>0</blocking-timeout-millis>
        <idle-timeout-minutes>0</idle-timeout-minutes>
        <query-timeout>0</query-timeout>
        <use-try-lock>0</use-try-lock>
        <allocation-retry>0</allocation-retry>
        <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
    </timeout>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

任何想法???我无法修改库,我没有代码。

所以我唯一的希望在于standalone.xml

1 个答案:

答案 0 :(得分:0)

好吧最后,解决方法是选择jar中的代码,然后创建一个新的java项目。将变量更改为setAutoCommit(false),然后重新编译项目,并像jar一样导出。所以,最后我得到了我的新jar,其值已在我的变量中更改。

一个奇怪的解决方案,但解决了这个问题。我当然使用了反编译器来实现这个解决方案

谢谢大家