JDBC(模拟银行转账)

插件lib:

1.数据库连接 com.xiao.dbc.DBConnection.java

package com.dbc;

import java.sql.*;

public class DBConnection {
	public final static String URL="jdbc:oracle:thin:127.0.0.1:1521:orcl";
	public final static String USER="bbs";
	public final static String PASSWORD="bbs";
	
	public static Connection getDBConn(){
		Connection con=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			con=
				DriverManager.getConnection(URL,USER,PASSWORD);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
	
	public static void closeDBConn(Connection con){
		try {
			con.close();
		} catch (SQLException e) {
			if(null!=con){
				con=null;
			}
		}
	}
	
	public static void main(String[] args) {
		Connection con=DBConnection.getDBConn();
		System.out.println(con);
		DBConnection.closeDBConn(con);
	}
}

2.实际操作 com.demo.TransformMoney.java

package com.demo;

import java.sql.*;

import com.dbc.DBConnection;

public class TransformMoney {
/*
  转账数据库涉及的操作:
	  (1) insert 交易记录表
	  (2) insert 交易记录表
	  (3) update 账号表
	  (4) update 账号表
	 只有上面的4个数据库操作都正确执行,转账才算成功.

数据库事务:
	 原子性:在一个事务中的所有操作被视为一个整体
	 一致性:操作前后数据的整体状态要一致
	 隔离性:事务之间不会互相影响
	 永久性:对事务当前的操作进行保存
	 
	  默认的事务模式: 每一条sql语句就是一个事务
	      
	  开启手动事务模式:开启后,执行commit表示提交事务,执行rollback表示回滚事务
	      
*/
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//徐小挺向陈大熊转账5000
		//徐小挺:1234567887654321
		//陈大熊:9234567887654328
		//交易金额:5000
		Connection con=DBConnection.getDBConn();
		try {
			//取消默认的事务模式,开启手动事务模式
			con.setAutoCommit(false);
			//插入交易记录信息
			String sql="insert into business values(5,'转出','1234567887654321','9234567887654328',5000,sysdate)";
			Statement st=con.createStatement();
			//执行插入交易记录sql语句
			st.executeUpdate(sql);
			
			//插入交易记录信息
			String sql2="insert into business values(6,'转入','9234567887654328','1234567887654321',5000,sysdate)";
			//执行插入交易记录sql语句
			st.executeUpdate(sql2);
			
			//修改转账关联的两个账号的余额
			//执行修改账号的余额的sql语句
			String sql3="update bankaccount set   ";
			
			
			st.close();
			//提交事务
			con.commit();
			System.out.println("转账交易成功!");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			try {
				//回滚事务
				con.rollback();
				System.out.println("转账交易失败!");
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
			DBConnection.closeDBConn(con);
	}

}





 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值