JDbc

JDBC概述

	 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API
	 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种
	 基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDB
	 C也是个商标名
	 
	 简单来说,JDbc可以做三件事情:与数据库建立连接、发送 操作数据库的语句并处理结果。

模拟登陆注册业务的实现

	数据库准备

		创建数据库表单添加属性
			uid、username、password、age、sex等
			创建实体类,将表单内的数据添加进去,根据基本类型赋予属性。
			注册业务的练习代码

模拟 用户注册 业务

4 * 1 模拟用户的假数据
5 * 2 保存到数据库中
6 * 2.1 判断当前用户名是否被注册 如果被注册 则提示用户名已存在
7 * 2.2 如果没有注册 则将 用户 信息存储到数据库中 并提示注册成功

11	@Test
12	public void testRegister() throws Exception {
13		//1 创建 一个 user 对象 模拟用户注册信息
14		User user = new User("root", "123456", 18, true, "2018-01-01");

15		//2 将用户信息存储到用户 user 表 中 
16		// 2.1 加载驱动
17		Class.forName("com.mysql.jdbc.Driver"); 
18		// 2.2 建立连接
19		String url = "jdbc:mysql://localhost:3306/mytest?CharacterEncoding=UTF-8";
20		Connection conn = DriverManager.getConnection(url, "root", "qwe");
21		// 2.3 创建查询
22		Statement st = conn.createStatement();
23		
24		// 2.4 执行sql 首先判断当前用户名 是否已经被注册 (查询当前用户名在数据库表中是否存在)
25		String sql1 = "select * from user where username = '" + user.getUserName() + "'";
26		ResultSet set = st.executeQuery(sql1);
27		// 判断结果集中是否有数据 如果有数据 证明该用户名已存在
28		if(set.next()){
29			//条件成立 证明有数据 提示用户名已存在
30			System.out.println("对不起 用户名已经存在");
31		}else{
32			// 将生日转化成DATE
33			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
34			Date date = sdf.parse(user.getBirthday());
35			java.sql.Date day = new java.sql.Date(date.getTime());
36			//条件不成立 证明用户名不存在 则将用户信息存储到数据库中 并提示 注册成功
37			String sql2 = "insert into user (username,password,age,sex,birthday) values ('"
38					    + user.getUserName() + "',"
39					    + user.getPassWord() + ","
40					    + user.getAge() + ","
41					    + user.isSex() + ", '"
42					    + day +"')";
43			 //执行并获取受影响的行数 如果 为 0 则 插入 失败 为 1则为成功
44			int count = st.executeUpdate(sql2);
45			if(count>0){
46				System.out.println("恭喜 注册成功");
47			}else{
48				System.out.println("sorry 注册失败");
49			}
50		}
51		// 2.5 关闭
52		set.close();
53		st.close();
54		conn.close();
55		
56	}

登陆业务的练习代码

 *   模拟 登录 业务
 * 	 模拟用户登录的假数据 
 *   判断用户名和密码是否正确 
 *   正确 则获取用户的所有信息 
 *   错误 提示用户 用户名或密码不正确

	@Test
	public void testLogin() throws Exception {
		// 1 创建一个user 对象 模拟用户登录的账号密码
		User user = new User("root", "123456");

		// 2 登录业务的实现
		// 2.1 加载驱动
		Class.forName("com.mysql.jdbc.Driver");
		// 2.2 建立连接
		String url = "jdbc:mysql://localhost:3306/mytest?CharacterEncoding=UTF-8";
		Connection conn = DriverManager.getConnection(url, "root", "qwe");
		// 2.3 创建查询
		Statement st = conn.createStatement();
		
		// 2.4 执行sql
		String sql1 = "select * from user where username='"
				    + user.getUserName() + "' and password="
				    + user.getPassWord();
		/* 根据用户名和密码作为查询条件去数据库中查询
		 * 如果查询到数据 证明 该用户名和密码匹配 则获取用户的所有信息
		 * 如果查询不到 证明 该用户名或密码不正确 给出提示信息
		 * */
        ResultSet set = st.executeQuery(sql1);	
        
        if(set.next()){
        	   int id = set.getInt("id");
        	   String userName = set.getString("username");
        	   String passWord = set.getString("password");
        	   int age = set.getInt("age");
        	   boolean sex = set.getBoolean("sex");
        	   java.sql.Date date = set.getDate("birthday");
        	   String birthday = new SimpleDateFormat("YYYY-MM-DD").format(date);
        	   
        	   User user2 = new User(id, userName, passWord, age, sex, birthday);
        	   System.out.println(user2);
        }else{
        	    System.out.println("对不起 用户名或密码错误");
        }
        
       // 2.5 关闭
     		set.close();
     		st.close();
     		conn.close();

}

Dao模式

	基本概念
		DAO(Data Access Object,数据访问对象),主要的功能是用于进行数据操作的,在程序的标准开发框架中属于数据层的操作。

开发结构

		客户层(Client)—>显示层(JSP/Servlet)—>业务层(BO)—>数据层(Dao)—>资源层(DataBase)
		资源层(DataBase):资源层是数据库的操作层,里面可以进行各种数据库的存储,但是这些数据存储的
		时候肯定是依靠SQL语句,

数据层

		通过一个专门的数据库组件完成对数据库的操作

业务层

		业务层是整个项目的核心

Dao组成

		DatabaseConnection:专门负责数据库打开与关闭操作的类
		VO:主要由属性,setter, getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录;
		DAO:主要定义操作的接口,定义一系列数据库的原子性操作,例如增删改查等;
		Impl: DAO接口的真实实现类,主要完成具体数据库操作,但不负责数据库的打开和关闭;
		Factory: 工厂类,通过工厂类取得一个DAO的实例化对象。

命名规范

		数据库连接: xxx.dbc.DatabaseConnection
		DAO接口: xxx.dao.IXxxDAO
		DAO接口真实实现类:xxx.dao.impl.XxxDAOImpl
		VO类: xxx.vo.Xxx, VO命名要与表的命名一致
		工厂类:xxx.factory.DAOFactory.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值