`
绿茵好莱坞
  • 浏览: 25015 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

day18-事务与连接池 3.jdbc中事务操作介绍

 
阅读更多


那么我们都是通过程序操作数据库。所以要了解jdbc下怎样对事务操作。jdbc如何操作事务?



自动事务false那就不开了呗相当于开启事务。

--------------------------------------------------------------------------------

package cn.itcast.transaction;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import cn.itcast.utils.JdbcUtils;
//代码加上事务了加上回滚了加上提交了


//jdbc中事务操作
public class TransactionTest1 {
    public static void main(String[] args) throws SQLException {

//修改id=2这个人的money=500;
String sql = "update account set money=500 where id=2";
Connection con = JdbcUtils.getConnection();

con.setAutoCommit(false);//开启事务,相当于start transaction;

Statement st = con.createStatement();
st.executeUpdate(sql);

//事务回滚
//con.rollback();

con.commit();//事务提交
st.close();
con.close();
}
}

package cn.itcast.transaction;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import cn.itcast.utils.JdbcUtils;
//代码加上事务了加上回滚了加上提交了


//jdbc中事务操作
public class TransactionTest2 {
    public static void main(String[] args) {

//修改id=2这个人的money=500;
String sql = "update account set money=500 where id=2";

//事务操作的异常不能说想抛就抛
Connection con = null;
Statement st  = null;


try {
    //如果数据库操作过程中捕获异常了,
     con = JdbcUtils.getConnection();
    con.setAutoCommit(false);//开启事务,相当于start transaction;
     st = con.createStatement();
     st.executeUpdate(sql);
} catch (SQLException e) {
    e.printStackTrace();
    //事务回滚 有异常就把事务回滚,有异常就说明出问题了
    //出问题就把数据恢复到原始,那就回滚吧
    try {
        con.rollback();
    } catch (SQLException e1) {
        e1.printStackTrace();
    }
}finally{//finally里面的内容肯定是能执行到的
    try {
        con.commit();//事务提交
        st.close();//资源关闭  释放资源操作 
        con.close();//资源关闭
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

}
}

package cn.itcast.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

public class JdbcUtils {

    private static final String DRIVERCLASS;
    private static final String URL;
    private static final String USERNAME;
    private static final String PASSWORD;

    private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
    static {
        DRIVERCLASS = ResourceBundle.getBundle("jdbc").getString("driverClass");
        URL = ResourceBundle.getBundle("jdbc").getString("url");
        USERNAME = ResourceBundle.getBundle("jdbc").getString("username");
        PASSWORD = ResourceBundle.getBundle("jdbc").getString("password");
    }

    static {
        try {
            // 将加载驱动操作,放置在静态代码块中.这样就保证了只加载一次.
            Class.forName(DRIVERCLASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        Connection con = tl.get();// 从ThreadLocal中获取Connection。第一次获取得到的是null.

        if (con == null) {
            // 2.获取连接
            con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            tl.set(con); // 将con装入到ThreadLocal中。
        }

        // tl.remove(); //解除
        return con;
    }

    // 关闭操作
    public static void closeConnection(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }

    public static void closeStatement(Statement st) throws SQLException {
        if (st != null) {
            st.close();
        }
    }

    public static void closeResultSet(ResultSet rs) throws SQLException {
        if (rs != null) {
            rs.close();
        }
    }
}


分享到:
评论

相关推荐

    day2013-0110-webLogic配置和集群(赵强).zip

    2. JDBC数据源:配置和管理JDBC数据源,连接到数据库,提供统一的访问接口,支持数据源的连接池和事务管理。 3. SSL安全配置:为了保障通信安全,可以配置WebLogic支持SSL(Secure Sockets Layer),加密传输数据,...

    day06_JDBC连接池&JDBCTemplate_docx1

    【JDBC连接池&JDBCTemplate】是Java开发中处理数据库交互的重要技术。JDBC是Java Database Connectivity的缩写,它提供了一组接口和类,使得Java程序能够与各种类型的数据库进行通信。JDBC不仅是Java操作数据库的...

    DAY06-MYBATIS框架基础-01.pdf

    6. 数据库连接池依赖,这里以Apache Commons DBCP2为例: ```xml &lt;groupId&gt;org.apache.commons &lt;artifactId&gt;commons-dbcp2 &lt;version&gt;2.8.0 ``` 7. 测试依赖,例如JUnit: ```xml &lt;groupId&gt;org.junit.jupiter...

    day06_JDBC连接池&JDBCTemplate2

    JDBC(Java Database Connectivity)是...JDBC连接池和JDBCTemplate是其在实际开发中的两个重要补充,它们提高了性能和代码质量,简化了数据库操作的复杂度。了解并熟练掌握这些知识,对于Java开发人员来说至关重要。

    day4-Spring JdbcTemplate & 声明式事务.md

    1. **POM文件**:在Maven项目中,我们需要添加必要的依赖,包括MySQL驱动、C3P0连接池、Druid连接池以及其他相关的Spring库。 2. **数据库表和实体**:假设我们有一个名为`account`的表,其结构如下图所示: !...

    day2-Spring IOC 和 DI 注解开发.md

    接下来可以通过读取`jdbc.properties`文件中的配置信息来创建连接池。 ```java @Test public void testC3P0ByProperties() throws Exception { // 加载类路径下的jdbc.properties ResourceBundle rb = ...

    Jdbc_Day01.zip_jdbc

    Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种API。它提供了一种标准的接口,使得Java开发者能够通过编写Java代码来访问、操纵和管理数据库。在"Jdbc_Day01.zip_jdbc"这个...

    jdbc.rar_数据库操作

    在IT行业中,数据库是存储和管理数据的核心工具,而JDBC(Java Database Connectivity)则是Java编程语言中用于访问和处理数据库的标准接口。...同时,这个转账业务场景也是对JDBC事务控制和SQL操作能力的很好实践。

    day01_jdbc_consumer_

    8. **连接池**: 为了提高性能和资源利用率,通常使用连接池(如C3P0, HikariCP, DBCP等)来管理数据库连接。 9. **异常处理**: JDBC操作中要捕获并妥善处理`SQLException`,确保程序的健壮性。 10. **JDBC最佳实践...

    jdbc.rar_java jdbc_达内

    8. **JDBC连接池**:在实际应用中,通常会使用连接池(如C3P0、HikariCP、Apache DBCP等)来管理数据库连接,提高系统性能和资源利用率。 9. **数据库元数据**:`DatabaseMetaData`接口提供了获取数据库信息的方法...

    day2_jdbc.zip_jdbc ut_jdbc util_jdbcUtil_jdbc封装

    在Java编程领域,JDBC(Java Database Connectivity)是Java应用程序连接和操作数据库的...在实际开发中,`JdbcUtil`类往往结合数据库连接池,提升应用性能,并通过参数化查询和事务管理,保证数据的安全性和一致性。

    传智播客崔希凡JavaWeb-day19JDBC第三天(DBUtil使用、jdbc案例)-全部资料

    在本课程中,崔希凡老师会展示如何创建和使用DBUtil,包括配置数据库连接信息,建立连接池,以及如何通过DBUtil执行SQL的增删改查操作。 接着,JDBC是Java连接数据库的标准接口,它提供了与各种数据库进行交互的...

    jdbc学习文件

    10. **PL/SQL**:虽然不是JDBC的一部分,但"PL_SQL"可能是Oracle数据库特有的PL/SQL语言的简写,可能在这些材料中介绍了如何在Java中执行PL/SQL块,或者PL/SQL与JDBC的交互。 通过这些文件,学习者将能够全面了解...

    详细标准的jdbc学习资料

    Java Database Connectivity(JDBC)是Java编程语言中用于与各种类型数据库交互的一种API。它为开发者提供了一套标准接口,使得程序员可以使用Java语言来访问和处理存储在数据库中的数据。本篇将深入讲解JDBC的基本...

    02_JDBC_day02(代码).zip

    8. **连接池**:在实际应用中,使用连接池(如C3P0、HikariCP、Apache DBCP等)管理数据库连接,提高性能,减少资源消耗。 9. **CallableStatement**:用于调用存储过程,与PreparedStatement类似,但可以处理IN、...

    MySQL练习JDBCDemo8.zip

    9. **连接池**:在实际应用中,为了提高性能和减少资源消耗,通常会使用连接池(如C3P0、HikariCP或Apache DBCP)来管理和复用数据库连接。 10. **异常处理**:在Java代码中,使用`try-catch-finally`块来捕获并...

    jdbc文档案例.zip

    JDBC(Java Database Connectivity)是Java编程语言中用于与关系数据库交互的一种标准接口。它由Sun Microsystems开发并作为Java平台的一部分发布,现在归甲骨文公司所有。JDBC提供了一套API,允许Java开发者在应用...

    JDBC与数据库程序设计

    3. **JDBC事务管理**:控制一组数据库操作的原子性,确保数据一致性。 **JDBC与不同数据库的差异** 不同的数据库可能有不同的方言(SQL扩展),因此在使用JDBC时,需要了解特定数据库的语法和特性。例如,MySQL支持...

    JAVA的JDBC学习遇到的问题1

    10. **连接池**:在实际应用中,为了提高性能和减少资源消耗,通常会使用连接池(如C3P0、HikariCP等),它预先创建一定数量的数据库连接,供应用程序复用。 11. **JDBC工具**:例如Hibernate、MyBatis等ORM框架,...

Global site tag (gtag.js) - Google Analytics