Java小白学习指南【day27】---JDBC入门

1、认识JDBC

Java DataBase Connectivity (Java数据库连接)

JDBC是一个规范,并没有实现功能,具体的功能实现是由各个数据库厂商

注意:JDBC是连接数据库与JAVA的唯一技术,其他的方式底层都是JDBC

2、HELLO JDBC

一、首席要进行导包,将对应数据库的时限包进行导入

二、代码口诀: 贾琏欲执事

① 贾 : 加载驱动 Driver

方式一: 创建驱动对象,再手动进行注册

方式二: 反射读取,自动注册 (Class.forname())

② 琏 : 获取连接 connection

③ 欲 : 获取语句对象 Statement

④ 执 : 执行sql execute

⑤.事 : 释放资源 close (从小到大,从里到外)

3、使用JDBC完成增删改查(CRUD)

增加数据

//增加数据
	@Test
	public void testAdd() throws Exception {
    
    
		//贾琏欲执事
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(
				"jdbc:mysql://localhost/java0827", "root", "652301");
		Statement cr = conn.createStatement();
		cr.executeUpdate("insert into t_user02(姓名,sex) values ('小红',0)");
		cr.close();
		conn.close();
	}

修改数据

@Test
	public void testUpdate() throws Exception {
    
    
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
		Statement cr = conn.createStatement();
		cr.executeUpdate("update t_user02 set 姓名 = '花花' where id = 2");
		cr.close();
		conn.close();
	}

删除数据

//删除数据
	@Test
	public void testDelete() throws Exception {
    
    
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
		Statement cr = conn.createStatement();
		cr.executeUpdate("delete from t_user02 where id = 1");
		cr.close();
		conn.close();
	}

查询数据

@Test
	public void testFindAll() throws Exception {
    
    
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
		Statement cr = conn.createStatement();
		ResultSet ex = cr.executeQuery("select * from t_user02");
		// System.out.println(ex);//com.mysql.jdbc.JDBC4ResultSet@32cf48b7
		while (ex.next()) {
    
    
			String string = ex.getString("姓名");
			boolean sex = ex.getBoolean("sex");
			Date date = ex.getDate("生日");
			System.out.println(string + "," + sex + "," + date);
		}
		// 释放资源
		ex.close();
		cr.close();
		conn.close();
	}

标准写法

/**
	 * 查询员工所有信息标准格式
	 * 贾琏欲执事
	 */
	@Test
	public void testQueryAll() {
    
    
		// 为了在finally中顺利关闭,需要声明在外部
		Connection conn = null;
		Statement cr = null;
		ResultSet ex = null;
		try {
    
    // 5、保证一定能释放资源
				// 1、贾:加载驱动(Driver)
			Class.forName("com.mysql.jdbc.Driver");
			// 2、琏:建立连接(connection)
			conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java0827", "root", "652301");
			// 3、欲:获取语句对象(statement)
			cr = conn.createStatement();
			// 4、执:执行sql语句
			ex = cr.executeQuery("select * from t_user02");
			while (ex.next()) {
    
    
				String string = ex.getString("姓名");
				boolean sex = ex.getBoolean("sex");
				Date date = ex.getDate("生日");
				System.out.println(string + "," + sex + "," + date);
			}
		} catch (Exception e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			// 5、事:释放资源(从小到大)
			// 还需要进行判断,万一其中一个没有执行到,保证每一个都会被关闭
			try {
    
    
				if (ex != null) {
    
    
					ex.close();
				}
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			} finally {
    
    
				try {
    
    
					if (cr != null) {
    
    
						cr.close();
					}
				} catch (SQLException e) {
    
    
					e.printStackTrace();
				} finally {
    
    
					try {
    
    
						if (conn != null) {
    
    
							conn.close();
						}
					} catch (SQLException e) {
    
    
						e.printStackTrace();
					}
				}
			}
		}
	}

4、domain和DAO实现

java中的三层结构: 表现层 controller、 业务层 service、 数据层 DAO

在这里插入图片描述
在这里插入图片描述

一、JDBCUtil工具包的写法

三块:

①、驱动只需要注册一次

②、准备一个或者直接获取到 Connction 的方法

③、准备一个关闭资源的方法

二、 Domain的创建

是用于三层之间数据传输的一个实体类,按照标准的 JavaBean 要求。

三、DAO的完成

注意事项:

①、准备dao包 cn.itsource.dao

这个包中写的是接口

接口的名称规范: IXxxDao 例: IUserDao,IEmployeeDao,IDepartmentDao

②、 准备dao的实现包 cn.itsource.dao.impl

这个包中是接口的实现

类名的名称规范: XxxDaoImpl 例: UserDaoImpl,EmployeeDaoImpl,Department DaoImpl

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/WLK0423/article/details/109995600