那么我们都是通过程序操作数据库。所以要了解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();
}
}
}
分享到:
相关推荐
2. JDBC数据源:配置和管理JDBC数据源,连接到数据库,提供统一的访问接口,支持数据源的连接池和事务管理。 3. SSL安全配置:为了保障通信安全,可以配置WebLogic支持SSL(Secure Sockets Layer),加密传输数据,...
在创建Mybatis-Spring工程时,可以创建一个普通的Maven工程,并在`pom.xml`文件中添加必要的依赖,包括Mybatis本身、Mybatis-Spring整合模块、Spring核心库、Spring JDBC以及数据库驱动和连接池等。例如,对于MySQL...
【JDBC连接池&JDBCTemplate】是Java开发中处理数据库交互的重要技术。JDBC是Java Database Connectivity的缩写,它提供了一组接口和类,使得Java程序能够与各种类型的数据库进行通信。JDBC不仅是Java操作数据库的...
6. 数据库连接池依赖,这里以Apache Commons DBCP2为例: ```xml <groupId>org.apache.commons <artifactId>commons-dbcp2 <version>2.8.0 ``` 7. 测试依赖,例如JUnit: ```xml <groupId>org.junit.jupiter...
JDBC(Java Database Connectivity)是...JDBC连接池和JDBCTemplate是其在实际开发中的两个重要补充,它们提高了性能和代码质量,简化了数据库操作的复杂度。了解并熟练掌握这些知识,对于Java开发人员来说至关重要。
1. **POM文件**:在Maven项目中,我们需要添加必要的依赖,包括MySQL驱动、C3P0连接池、Druid连接池以及其他相关的Spring库。 2. **数据库表和实体**:假设我们有一个名为`account`的表,其结构如下图所示: !...
接下来可以通过读取`jdbc.properties`文件中的配置信息来创建连接池。 ```java @Test public void testC3P0ByProperties() throws Exception { // 加载类路径下的jdbc.properties ResourceBundle rb = ...
Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种API。它提供了一种标准的接口,使得Java开发者能够通过编写Java代码来访问、操纵和管理数据库。在"Jdbc_Day01.zip_jdbc"这个...
在IT行业中,数据库是存储和管理数据的核心工具,而JDBC(Java Database Connectivity)则是Java编程语言中用于访问和处理数据库的标准接口。...同时,这个转账业务场景也是对JDBC事务控制和SQL操作能力的很好实践。
8. **连接池**: 为了提高性能和资源利用率,通常使用连接池(如C3P0, HikariCP, DBCP等)来管理数据库连接。 9. **异常处理**: JDBC操作中要捕获并妥善处理`SQLException`,确保程序的健壮性。 10. **JDBC最佳实践...
8. **JDBC连接池**:在实际应用中,通常会使用连接池(如C3P0、HikariCP、Apache DBCP等)来管理数据库连接,提高系统性能和资源利用率。 9. **数据库元数据**:`DatabaseMetaData`接口提供了获取数据库信息的方法...
在Java编程领域,JDBC(Java Database Connectivity)是Java应用程序连接和操作数据库的...在实际开发中,`JdbcUtil`类往往结合数据库连接池,提升应用性能,并通过参数化查询和事务管理,保证数据的安全性和一致性。
在本课程中,崔希凡老师会展示如何创建和使用DBUtil,包括配置数据库连接信息,建立连接池,以及如何通过DBUtil执行SQL的增删改查操作。 接着,JDBC是Java连接数据库的标准接口,它提供了与各种数据库进行交互的...
10. **PL/SQL**:虽然不是JDBC的一部分,但"PL_SQL"可能是Oracle数据库特有的PL/SQL语言的简写,可能在这些材料中介绍了如何在Java中执行PL/SQL块,或者PL/SQL与JDBC的交互。 通过这些文件,学习者将能够全面了解...
Java Database Connectivity(JDBC)是Java编程语言中用于与各种类型数据库交互的一种API。它为开发者提供了一套标准接口,使得程序员可以使用Java语言来访问和处理存储在数据库中的数据。本篇将深入讲解JDBC的基本...
8. **连接池**:在实际应用中,使用连接池(如C3P0、HikariCP、Apache DBCP等)管理数据库连接,提高性能,减少资源消耗。 9. **CallableStatement**:用于调用存储过程,与PreparedStatement类似,但可以处理IN、...
9. **连接池**:在实际应用中,为了提高性能和减少资源消耗,通常会使用连接池(如C3P0、HikariCP或Apache DBCP)来管理和复用数据库连接。 10. **异常处理**:在Java代码中,使用`try-catch-finally`块来捕获并...
JDBC(Java Database Connectivity)是Java编程语言中用于与关系数据库交互的一种标准接口。它由Sun Microsystems开发并作为Java平台的一部分发布,现在归甲骨文公司所有。JDBC提供了一套API,允许Java开发者在应用...
3. **JDBC事务管理**:控制一组数据库操作的原子性,确保数据一致性。 **JDBC与不同数据库的差异** 不同的数据库可能有不同的方言(SQL扩展),因此在使用JDBC时,需要了解特定数据库的语法和特性。例如,MySQL支持...