加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – JDBC连接默认autoCommit行为

发布时间:2020-12-12 13:53:17 所属栏目:百科 来源:网络整理
导读:我正在使用JDBC连接到Oracle。我测试了connection.setAutoCommit(false)vs connection.setAutoCommit(true)并且结果如预期的那样。 虽然默认情况下,连接应该像AutoCommit(true)一样工作[如果我错了就纠正我],但是没有记录被插入,直到connect.commit()被调
我正在使用JDBC连接到Oracle。我测试了connection.setAutoCommit(false)vs connection.setAutoCommit(true)并且结果如预期的那样。

虽然默认情况下,连接应该像AutoCommit(true)一样工作[如果我错了就纠正我],但是没有记录被插入,直到connect.commit()被调用。关于默认行为的任何建议?

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

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

conn.commit();
从 Oracle JDBC documentation:

When a connection is created,it is in auto-commit mode. This means
that each individual SQL statement is treated as a transaction and is
automatically committed right after it is executed. (To be more
precise,the default is for a SQL statement to be committed when it is
completed,not when it is executed. A statement is completed when all
of its result sets and update counts have been retrieved
. In almost
all cases,however,a statement is completed,and therefore committed,
right after it is executed.)

另一件事就是 – 你忽略了连接创建的细节,所以我只是猜测 – 如果你正在使用一些框架,或从数据源或连接池获取一个连接,那么这些框架/池/数据源可能会关闭自动提交 – 解决方案是永远不信任默认设置;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读