简单地模拟了银行账户之间相互转账的功能,该项目在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); } }