java MFC框架的理解(笔记JDBC,SQL)

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

主要是将业务层与持久层分开

模拟ATM的存款 取款 转账 

数据库中创建的表

create table tb_atm(username varchar(10),password varchar(10),yue number(6));

利用 insert into tb_atm values(*    *,*    *,*    *)插入一下数据

username password yue
小明 123456 10000
小王 123456 10000

1.连接数据库

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBC_conn {
	public static Connection conn() {
		Connection conn=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123456");
		} catch (ClassNotFoundException e) {
			System.out.println("加载驱动失败...");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("连接数据库失败...");
			e.printStackTrace();
		}
		return conn;
	}
}

2.建立一个数据库数据的映射,以方便对数据库数据的查询

public class ATM_OP {
	private String username;
	private String password;
	private int yue;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getYue() {
		return yue;
	}
	public void setYue(int yue) {
		this.yue = yue;
	}

}

3..持久层(DAO)与  业务层

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 思路: 简化DAO的查询语句,创建一个ATM_OP类完成对数据库数据的映射,来对数据进行查询
 * 完成银行的存款、转账、取款只需要对数据库先进行映射查询,然后根据查询到数据在业务端对数据进行业务处理,然后
 * 再调用持久层,把业务的最新数据跟新到数据库;
 * 注意事项:导包不要导错(sql)
 * 	查询语句要正确
 */
public class ATM {
	//编写DAO持久层
	//1.更新数据库操作
	public void updateDAO(String username,int money) {
		String sql="update tb_atm set yue='"+money+"'where username='"+username+"'";
		try {
			JDBC_conn.conn().createStatement().executeUpdate(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//查询对应用户的数据库内容映射到ATM
	public ATM_OP load(String username) {
		ATM_OP atm=new ATM_OP();
		ResultSet rs=null;
		String str="select * from tb_atm where username='"+username+"'";
		try {
			rs=JDBC_conn.conn().createStatement().executeQuery(str);
			if(rs.next()) {
				atm.setUsername(rs.getString("username"));
				atm.setPassword(rs.getString("password"));
				atm.setYue(rs.getInt("yue"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			return atm;
		}
		

	
	
	//编写业务层
	
	//1.存款
	public void cunkuan(String username,int money) {
		ATM_OP a=load(username);
		a.setYue(a.getYue()+money);
		updateDAO(username, a.getYue());
	}
	//2.取款
	public void qukuan(String username,int money) throws SQLException {
		if(money<yu(username)) {
			ATM_OP a=load(username);
			a.setYue(a.getYue()-money);
			updateDAO(username, a.getYue());
		}
		else {
			System.out.println("该账户余额不足");
		}
	}
	
	//3.转账
	public void zhuangzhang(String zusername,int money,String susername) throws SQLException {
		if(money<yu(zusername)) {
			ATM_OP a=load(zusername);
			a.setYue(a.getYue()-money);
			updateDAO(zusername, a.getYue());
			
			ATM_OP a1=load(susername);
			a1.setYue(a1.getYue()+money);
			updateDAO(susername, a1.getYue());
		}
		else {
			System.out.println("该账户余额不足");
		}
	}
	
	//余额查询
	//对应余额的查询、
		public int yu(String username) throws SQLException {	
			return load(username).getYue();
		}
		
}

4.测试

import java.sql.SQLException;

public class Test {

	public static void main(String[] args) throws SQLException {
		ATM atm=new ATM();
		//小明存款100
		atm.cunkuan("小明", 100);
		System.out.println(atm.yu("小明"));
		
		//小王取款1000
		atm.qukuan("小王", 1000);
		System.out.println(atm.yu("小王"));
		//小明给小王转款1000
		atm.zhuangzhang("小明", 1000, "小王");
		System.out.println(atm.yu("小明"));
		System.out.println(atm.yu("小王"));
	}

}

猜你喜欢

转载自blog.csdn.net/qq_36055407/article/details/81707006
今日推荐