插件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);
}
}