简单地模拟了银行账户之间相互转账的功能,该项目在java代码中分为了4个包
1、调用数据库的存储过程
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import entity.UserInfo;
import util.DBUtil;
public class Dao {
private static Connection conn = DBUtil.getConn();//链接数据库
CallableStatement cs = null;//预编译
public String getConn(UserInfo u){
String str = null;//定义一个字符串用来接收返回的字符串
//调用oracle中的名为zhuanzhang 的存储过程
String sql = "{call zhuangzhang(?,?,?,?)}";
try {
cs = conn.prepareCall(sql);
cs.setInt(1, u.getUuid());
cs.setDouble(2, u.getMoney());
cs.setInt(3, u.getIdd());
cs.registerOutParameter(4, java.sql.Types.VARCHAR);
cs.execute();
//将从数据库获得的值存入str并返回
str = cs.getString(4);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
2、数据库链接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 链接数据库的类
* @author Administrator
*
*/
public class DBUtil {
private static Connection conn = null;//链接
private static String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
//使用的Scott账户,密码设置为root 其中在实验中给了scott用户dba权限
private static String user = "scott";
private static String password = "root";
public static Connection getConn(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 加载Oracle驱动程序
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 获取连接
return conn;
}
}
3、封装的实体
public class UserInfo {
private int uuid; //转出账户的id
private double money;//转出的金额
private int idd; //接收转账的id
public int getUuid() {
return uuid;
}
public void setUuid(int uuid) {
this.uuid = uuid;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public int getIdd() {
return idd;
}
public void setIdd(int idd) {
this.idd = idd;
}
}
4、代码执行的入口,此处直接使用的main方法
import java.util.Scanner;
import dao.Dao;
import entity.UserInfo;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("欢迎来到自助银行,请输入你的账号:");
UserInfo u = new UserInfo();
Dao d = new Dao();
u.setUuid(sc.nextInt());
System.out.println("请输入要转的金额:");
u.setMoney(sc.nextDouble());
System.out.println("请输入对方账号:");
u.setIdd(sc.nextInt());
//将对象放入dao内的getConn方法中,得到返回的str值
String str = d.getConn(u);
System.out.println(str);
}
}