事务,事务的提交和回滚,dao模式,连接池

本文探讨了数据库事务的基本概念,包括一致性、隔离性和持久性的特点,并介绍了Oracle数据库的读取提交和可串行化两种事务隔离级别。接着,详细阐述了事务的提交和回滚操作,以及如何在异常情况下使用回滚点确保数据一致性。此外,还讨论了DAO模式的应用,包括实体类、DAO接口、实现类和DBUtils工具类的使用。最后,提到了连接池在数据库操作中的重要性。
摘要由CSDN通过智能技术生成

1. 数据库事务
一组要么同时执行成功,要么同时执行失败的SQL语句。是数据库操作的一个执行单元
事务的四大特点
Consistency(一致性),Isolation(隔离性),Durability(持久性),
Oracle数据库
Read Committed(读取提交内容),Serializable 可串行化
DBUtils工具类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtils {
   
	private static String driver = null;
	private static String url = null;
	private static String username = null;
	private static String password = null;
	static {
   
		Properties properties = new Properties();
		FileInputStream fis;
		try {
   
			fis = new FileInputStream("src\\database.properties");// 相对路径是相对于工程的
			properties.load(fis);
			// load方法的作用:将文件中的信息通过流读取到properties中
			driver = properties.getProperty("driver");
			url = properties.getProperty("url");
			username = properties.getProperty("username");
			password = properties.getProperty("password");
			// 注册驱动了
			Class.forName(driver);
		} catch (FileNotFoundException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
	public static Connection getConnection() {
   
		try {
   
			return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "SCOTT", "tiger");
		} catch (SQLException e) {
   

			e.printStackTrace();
		}
		return null;
	}
	public static void excuteUpdate(String sql, Object[] obj) {
   
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
   
			// 1.注册驱动
			// 2.建立连接
			conn = getConnection();
			// 3.statement
			pstmt = conn.prepareStatement(sql);
			// 4.赋值参数
			for (int i = 0; i < obj.length; i++) {
   
				pstmt.setObject(i + 1, obj[i]);
			}
			// 5.执行sql
			int num = pstmt.executeUpdate();
			// 6.处理结果
			if (num > 0) {
   
				System.out.println("操作成功");
			}
		} catch (SQLException e) {
   
			e.printStackTrace();
		} finally {
   
			// 7.关闭
			closeAll(null, pstmt, conn);
		}
	}
	public static void closeAll(ResultSet set, Statement stmt, Connection conn) {
   
		if (set != null) {
   
			try {
   
				set.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值