Transfer_transaction.java // 调用数据库文件
package com.bjpowernode.jdbc.transfer;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.bjpowernode.jdbc.util.DBUtil;
public class Transfer_transaction {
public static void main(String[] args) {
transfer( "zs","ls",100 );
}
/**
*
* @param from_act : 转出账户
* @param to_act :转入账户
* @param money : 转账金额
*/
private static void transfer(String from_act, String to_act, double money) {
/* if(转出账户的金额 >= 转账金额){
转出账户 - 转账金额
转入账户 + 转账金额
}else{
提示余额不足
} */
Connection conn = null ;
// 转出账户的金额
try {
// 事务是针对连接开启的
conn = DBUtil.getConnection();
// 开启事务
DBUtil.beginTransaction(conn);
double from_money = getMoneyByAct(conn,from_act);
if (from_money >= money){ // 转出账户的金额 >= 转账金额
// 转账
// 转出账户 - 转账金额
updateMoneyByAct(conn,from_money- money,from_act);
// 转入账户的金额
double to_money = getMoneyByAct(conn,to_act);
// 模拟异常
// Integer.parseInt("abc");
// 转入账户+ 转账金额
updateMoneyByAct(conn,to_money+ money,to_act);
// 提交事务
DBUtil测试数据mit(conn);
System.out.println( "转账成功!" );
} else { // 提示余额不足
System.out.println("余额不足!" );
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println( "转账失败!" );
// 回滚事务
DBUtil.rollback(conn);
} finally {
DBUtil.close( null , null , conn);
}
}
/**
* 通过账户修改账户金额
*
* @param money : 需要修改的金额
* @param act : 账户名称
*/
private static void updateMoneyByAct(Connection conn , double money, String act) {
// TODO Auto-generated method stub
// Connection conn = null;
PreparedStatement pstm = null ;
try {
// conn = DBUtil.getConnection();
String sql = "update t_account set money = ? where act_no = ?" ;
pstm = conn.prepareStatement(sql);
pstm.setDouble( 1 , money);
pstm.setString( 2 , act);
pstm.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException("修改金额失败" ,e);
} finally {
DBUtil.close( null , pstm, null );
}
}
/**
* 通过账户查询账户金额
* @param act
* @return
*/
private static double getMoneyByAct(Connection conn ,String act) {
// Connection conn = null;
PreparedStatement pstm = null ;
ResultSet rs = null ;
double from_money = 0 ;
try {
// 获得连接
// conn = DBUtil.getConnection();
String sql = "select money from t_account where act_no = ?" ;
// 创建数据库操作对象
pstm = conn.prepareStatement(sql);
// 为占位符号赋值
pstm.setString(1 , act);
// 执行sql
rs = pstm.executeQuery();
/* while(rs.next()){
from_money = rs.getDouble("money");
}
if(rs.next()){
from_money = rs.getDouble("money");
}
*/
from_money = rs.next()?rs.getDouble("money"):0 ;
} catch (Exception e) {
throw new RuntimeException("查询账户余额失败!" ,e);
} finally {
DBUtil.close(rs, pstm, null );
}
return from_money;
}
}
DBConfig.properties //数据库配置文件
driver= com.mysql.jdbc.Driver url =jdbc\:mysql\://127.0.0.1\:3366/ bjpowernode uname = root pwd =root
java连接数据库——JDBC连接数据库
标签:
查看更多关于java连接数据库——JDBC连接数据库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did118693