- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 JDBC 中为我正在开发的应用程序执行事务,但 Connection#setAutoCommit(false)
似乎不起作用。代码如下:
String insertCliente = "INSERT INTO Cliente VALUES (?,?,?,?,?,?)";
String vendiAuto = "{CALL VendiAuto(?,?,?,?)}";
try
{
connection.setAutoCommit(false);
PreparedStatement statement1 = connection.prepareStatement(insertCliente);
CallableStatement statement2 = connection.prepareCall(vendiAuto);
statement1.setString(1,CF);
statement1.setString(2,nome);
statement1.setString(3,cognome);
statement1.setDate(4,new Date(new GregorianCalendar(anno,mese,giorno).getTimeInMillis()));
statement1.setString(5,luogo);
statement1.setString(6,sesso);
statement2.setString(1,codice);
statement2.setString(2,venditore);
statement2.setString(3,CF);
statement2.setBigDecimal(4,prezzoVendita);
statement1.execute();
statement2.execute();
connection.commit();
}
catch (SQLException e)
{
connection.rollback();
throw e;
}
finally
{
connection.setAutoCommit(true);
}
如果statement2.execute()
失败,尽管connection.rollback()
被调用,statement1.execute()
仍然有效。
也许我做错了什么。
我不知道如何解决。你能帮我吗?
使用的DBMS是MySQL 8.0.18,表引擎是InnoDB。
最佳答案
我发现connection.setAutoCommit(false)
与我的存储过程有冲突:在该过程中,已经有一个事务(用START TRANSACTION
定义)并且不知怎的,它与声明相冲突。
我解决了从存储过程中删除事务的问题。
关于java - 为什么 setAutoCommit(false) 在 JDBC 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59343822/
public void batchUpdate() throws SQLException { Statement stmt = null; try { this.connection.set
我遇到过this甲骨文java教程。作为该主题的初学者,我无法理解为什么需要在事务结束时设置 con.setAutocommit(true);。 这是神谕的解释: The statement con.
假设我有一个创建数据库连接的常用方法: Connection getConnection() throws SQLException { Connection con = ... // cre
这是典型的项目结构,一旦用户登录到应用程序,就会创建数据库连接。 Login.java{ Creating DB Connection DriverManager.registerDr
如果我们在 Oracle DB 的 Java 类中使用两次 setAutoCommit(true) 会发生什么。 try{ Connection conn = getConnection();
我正在使用 postgresql 9.2 和 C3p0 0.9.2.1,我创建了一个连接定制器来禁用 autoCommit 并设置 transactionMode 但是当我在 InitialConte
如果我执行 connection.setAutoCommit(false); 会发生什么,它会在数据库端创建一个新事务吗? 最佳答案 根据documentation , connection.setA
我注意到一些程序员使用 COMMIT 其他使用 conn.setAutoCommit(true); 来结束事务或回滚那么使用一个而不是另一个? 主要区别在哪里? conn.setAutoCommit(
我注意到一些程序员使用 COMMIT 其他使用 conn.setAutoCommit(true); 来结束事务或回滚那么使用一个而不是另一个? 主要区别在哪里? conn.setAutoCommit(
从池中获取数据库连接 (conn)。 假设该连接上的autocommit 为 TRUE。 现在 conn.setautocommit(false) 已设置; 然后经过几次语句更新,最后 conn.co
我的提问的基本根源来自于这种观察。当我使用Hibernate并进行任何查询时,我在MySQL日志中得到以下内容: SET autocommit=0 insert into SimpleNamedEnt
我在创建连接后立即设置 con.setAutoCommit(false); 以便数据库中没有未提交的内容。但事实证明,如果您关闭连接,则无论您的 setAutoCommit() 状态如何,所有事务都将
DB 是 Oracle。 我想为 SQL 存储过程和函数使用 Connection.setAutoCommit。会成功吗? 对于调用过程,我使用 CallableStatement 最佳答案 不行,c
我正在尝试在 JDBC 中为我正在开发的应用程序执行事务,但 Connection#setAutoCommit(false) 似乎不起作用。代码如下: String insertCliente = "
我遇到了 Postgres 驱动程序的问题,该驱动程序是 9.1-901.jdbc4,我的数据库服务器是 Postgres 10。我在批量更新中遇到问题,因此我尝试将驱动程序更改为版本 42.2.5。
我有一个 Spring Batch 项目,正在使用 Atomikos 进行事务管理。 这是我的数据源配置和atomikos配置。 @Bean public DataSource dataSou
我创建了一个 DBManager 类,如下所示 public class DBManager { public static String DRIVER = "oracle.jdbc.dr
假设我有以下代码。 try { connection.setAutoCommit(false) ; .... .... connection.commit(); } c
我对 set chained 有一些困惑setAutoCommit()中的声明net.sourceforge.jtds.jdbc.Driver中的方法 source code说: 2161 if (
我是一名优秀的程序员,十分优秀!