- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 DB2。我为它创建了 ConnectionPool。一些需要在“aumoCommit = false”模式下执行的查询。
Connection con = ConnectionPool.getConnection // wrapper
con.setAutoCommit(false);
PreparedStatment ps = con.prepareStatement(// query... );
ps.setString(...);
ps.executeUpdate();
con.commit();
ps.close();
con.close();
con.setAutoCommit(true); // should be here ?
问题是:我应该在最后添加 con.setAutoCommit(true) 行还是 C3P0 重置每个关闭(返回到池)连接的状态?
编辑:经过一些评论后,我补充说我的问题是:con.setAutoCommit(false) 调用一般应该在那里还是 c3P0 重置此连接的状态,下一次此连接将在 con.setAutoCommit(false) 中默认情况下?
最佳答案
根据 JDBC 规范,c3p0 总是释放 autoCommit
设置为 true
的连接。
一般来说,c3p0 努力确保您在普通客户端 session 期间所做的任何事情都不会对 future 的客户端 session 产生任何影响。一旦将连接签回池中,c3p0 将完全重置并恢复其状态。
唯一可以定义跨客户端 session “坚持”的连接状态的地方是 ConnectionCustomizer 的 onAcquire(...)
方法,该方法在任何客户端 session 启动之前调用。但这仅适用于 JDBC 规范未定义其值的连接属性。由于规范要求 autoCommit
为新连接的 true
,并且 JDBC 透明连接池需要池化,并且新连接在应用程序语义中无法区分,所以新 checkout 的连接总是将 autoCommit
设置为 true。
关于java - autoCommit var 在关闭时是否在 c3p0 中重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394246/
我试图通过 mysql 查询(无连接)从表中删除超过 200 万条记录。该表大约有 8000 万条记录。 我使用了set autocommit=0;并且需要很长时间才能完成。如果我使用 autocom
1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交。如果修改为关闭状态,则执行DML语句之后要手动提交 才能
我正在使用我公司许多人共享的服务器。服务器上有多个数据库,我不控制服务器。 系统管理员已将自动提交设置为 false 的默认设置。这在尝试使用 PHPMYADMIN 时给我带来了麻烦。 我能否安全地将
我的应用程序是基于 RoR 和 MySQL 的。我想将自动提交从打开变为关闭,并且我知道如何在 MySQL 中执行此操作。但是我是否需要停止并重新启动 Rails 服务器以确保此更改在我的应用程序中生
我在项目中使用 pg_connect 和 pg_query。但是我真的不确定 pg_connect 是否使用 AutoCommit 模式? 这个问题很重要,因为我需要在事务下写一些 block ,如果
试图理解事务...我正在使用 Spring 的 JdbcTemplate和@Transactional方法中的注释。尽管事务在方法执行期间处于 Activity 状态(如日志和 Transaction
我的代码有什么问题吗?我正在使用 mysql 连接器来处理 mysql 数据库。在构建阶段一切看起来都很酷,但是当我运行我的代码时,我收到此错误: ERROR: SQLException in /pr
我的代码有什么问题?我正在使用 mysql 连接器来处理 mysql 数据库。在构建阶段一切看起来都很酷但是当我运行我的代码时我得到这个错误: ERROR: SQLException in /prog
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我正在审查另一位开发人员的代码。他有一个在 MySQL 事务开始时显式添加 set autocommit=0 的提交。这会导致 session 中其他非事务性查询出现问题。 在事务中添加 set au
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我需要在 Linux 中使用 erlang odbc 模块禁用 oracle 的自动提交。我创建了代码连接: {ok, Con} = odbc:connect("DSN=MyDSN", [{auto_
我一直想知道为什么 JDBC API 提供了自动提交模式(java.sql.Connection.setAutocommit())。这似乎是一种有吸引力的滋扰,只会引诱人们陷入困境。我的理论是,它只是
我正在使用 EJB 开发应用程序,当我在数据库上进行事务时,出现以下错误: Grave: RAR5031:System Exception javax.resource.spi.LocalTransa
我正在处理一个仅使用“autoCommit=true”创建连接的连接池。 但是,对于我的特定用例,我需要“autoCommit=false”以便我可以在 JDBC 语句上设置“获取大小”属性。 我的初
我正在使用 DB2。我为它创建了 ConnectionPool。一些需要在“aumoCommit = false”模式下执行的查询。 Connection con = ConnectionPool.g
我想使用 cron 运行 SSH 命令,我想通过添加 autocommit=0 来扩展此 cron,以便禁用自动提交。 我怎样才能做到这一点? 命令: mysql dbname -u dbuser -
/* MyISAM */ SET AUTOCOMMIT = 0; INSERT INTO table_name (table_field) VALUES ('foo'); INSERT INTO ta
当我立即执行 START TRANSACTION 后跟 SHOW VARIABLES LIKE 'autocommit' 时,我看到变量 autocommit 仍然设置为 打开。在我明确地说 COMM
我已经进行了几次试验,如果将 autocommit 设置为 False,速度似乎会有所提高。 但是,我担心在我的代码末尾进行一次提交,数据库行将不会更新。因此,例如,我对数据库进行了几次更新,但都没有
我是一名优秀的程序员,十分优秀!