JDBC事务操作:
package bull06.Transaction;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
import bull03.C3P0.C3P0Utils;
public class JDBCTransactionDemo {
@Test
public void demo() throws SQLException {
Connection conn = null;
PreparedStatement psmt = null;
try {
conn = C3P0Utils.getConnection();
conn.setAutoCommit(false);
String sql = "update account set money = money + ? where name = ?";
psmt = conn.prepareStatement(sql);
psmt.setInt(1, -100);
psmt.setString(2, "jack");
psmt.executeUpdate();
psmt.setInt(1, 100);
psmt.setString(2, "rose");
psmt.executeUpdate();
conn.commit();
} catch (Exception e) {
conn.rollback();
throw new RuntimeException("事务回滚",e);
} finally {
if(conn != null) {
conn.close();
}
}
}
}
DBUtils事务操作:
package bull06.Transaction;
import java.sql.Connection;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import bull03.C3P0.C3P0Utils;
public class DBUtilsTransaction {
@Test
public void demo() {
Connection conn = null;
QueryRunner queryRunner = new QueryRunner();
try {
conn = C3P0Utils.getConnection();
conn.setAutoCommit(false);
String sql = "update account set money = money + ? where name = ?;";
int i = queryRunner.update(conn, sql, 100,"jack");
int j = queryRunner.update(conn, sql, -100,"rose");
DbUtils.commitAndCloseQuietly(conn);
System.out.println("提交成功!");
} catch (Exception e) {
e.printStackTrace();
DbUtils.rollbackAndCloseQuietly(conn);
}
}
}