JDBC连接默认自动提交行为(JDBC connection default autoCommit

2019-07-29 22:23发布

我使用JDBC连接到Oracle。 我测试connection.setAutoCommit(false) VS connection.setAutoCommit(true) ,结果如预期。

虽然默认的连接应该好像工作autoCommit(true) [纠正我,如果我错了],但正在没有插入的记录,直到connection.commit()被调用。 任何有关默认行为的建议?

String insert = "INSERT INTO MONITOR (number, name,value) VALUES (?,?,?)";

conn = connection; //connection  details avoided
preparedStmtInsert = conn.prepareStatement(insert);
preparedStmtInsert.execute();

conn.commit();

Answer 1:

从甲骨文JDBC文档 :

当创建连接时,它是在自动提交模式。 这意味着每个单独的SQL语句被视为一个事务,并执行之后会自动提交。 (更确切地说, 默认的是,当它完成,而不是在执行的时候,语句完成时,其所有的结果集和更新计数已检索要提交一个SQL语句 。在几乎所有情况下,但是,声明中完成的,因此承诺,这是执行之后。)

另一件事是-你ommitted连接创建的细节,所以我只是猜测-如果你正在使用一些框架,或收购从一个数据源或连接池的连接时, autocommit可以被关off由这些框架/库/数据源-解决的办法是从来没有在默认设置信任;-)



文章来源: JDBC connection default autoCommit behavior