JDBC更新数据与事务处理以及删除、查询数据

本文详细介绍了JDBC在更新数据时如何确保事务的原子性,通过示例展示了转账操作的事务处理。同时,讲解了JDBC删除数据的步骤,强调了使用StringBuilder的原因,并提供了批量删除的实现。此外,还探讨了JDBC查询数据的方法,包括根据编号查询及模糊分页查询的示例代码。
摘要由CSDN通过智能技术生成

JDBC更新数据与事务处理

在数据的更新的时候需要考虑到事务的原子性,就是一个事务中多个操作要么都成功要么都失败。

示例:SMITH给ALLEN转账

public class TestMysql3 {
   

	public static void main(String[] args) {
   
		
		try {
   
			System.out.println(updateDeposit(200.00));
		} catch (SQLException e) {
   
			e.printStackTrace();
		}
	}

	public static boolean updateDeposit(Double sum) throws SQLException {
   
		
		// 取得连接对象
		Connection conn = ConnectionUtils.getConnection();
		
		// 定义sql语句
		String sql1 = "UPDATE emp SET deposit=deposit-? WHERE ename='SMITH'";
		String sql2 = "UPDATE emp SET deposit=deposit+? WHERE ename='ALLEN'";

		// 取消事务自动提交
		conn.setAutoCommit(false);
		
		int row1 = 0;
		int row2 = 0;

		try {
   
			
			// 取得预编译对象(发送sql语句对象)
			PreparedStatement pst1 = conn.prepareStatement(sql1);
			PreparedStatement pst2 = conn.prepareStatement(sql2);
			
			//为占位符赋值
			pst1.setDouble(1, sum);
			pst2.setDouble(1, sum);
			
			// 执行sql语句
			row1 = pst1.executeUpdate();
			row2 = pst2.executeUpdate();

			// 以上的全部代码都执行成功才手动提交事务
			conn.commit();

		} catch (Exception e) {
   
			
			e.printStackTrace();
			
			// 如果出现异常则事务回滚
			conn.rollback();
		
		} finally {
   
			
			//关闭连接
			ConnectionUtils.close(conn);
		}
		return row1 > 0 && row2 > 0;

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值