目录

Java 操作数据库(三) JDBC简单封装

本节目标

  • 学会简单封装使用 JDBC

本示例以 MySQL 数据库作为演示库

引入驱动包

<dependencies>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.16</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
		<scope>test</scope>
	</dependency>
</dependencies>

简单封装工具类 SimpleJDBCUtil.java

package com.bqteam.learn.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SimpleJDBCUtil {
	/**
     * 获取连接对象
     * @param host     Host
	 * @param port     Port
     * @param user     数据库用户名
     * @param password 密码
     * @param database 数据库名称
     */
	public static Connection getConnection(String host, String port, String user, String password, String database) throws Exception {
		// 注册驱动
		Class.forName("com.mysql.cj.jdbc.Driver");
		String DSN = "jdbc:mysql://" + host + ":" + port + "/" + database
			+ "?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false";
		// 链接数据库
		return DriverManager.getConnection(DSN, user, password);
	}

	/**
     * 关闭数据库资源
     *
     * @param connection 连接对象
     * @param statement  Statement 对象
     * @param resultSet  结果集
     */
	public static void close(Connection connection, Statement statement, ResultSet resultSet) {
		try {
			if (resultSet != null) {
				resultSet.close();
			}
			if (statement != null) {
				statement.close();
			}
			if (connection != null) {
				connection.close();
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}
}

利用 JUnit 测试

package com.bqteam.learn.jdbc;

import org.junit.Test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestSimpleJDBCUtil {
	@Test
	public void testQuery() {
		Connection connection = null;
		Statement statement = null;
		ResultSet rs = null;
		try {
			// 获取连接
			connection = SimpleJDBCUtil.getConnection("YOUR_HOST", "YOUR_PORT", "USERNAME", "YOUR_PASSWORD", "DATABASE");
			statement = connection.createStatement();
			// 查询数据
			final String SQL = "select * from lph_homework limit 10";
			rs = statement.executeQuery(SQL);
			while (rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				int mcgId = rs.getInt("math_cls_group_id");
				System.out.printf("作业ID为 %d,名称为 %s,教学组ID为 %d\n", id, name, mcgId);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			SimpleJDBCUtil.close(connection, statement, rs);
		}
	}
}

输出的结果如下:

作业ID为 92,名称为 作业12-3-20171128,教学组ID为 2
作业ID为 41,名称为 作业7-2-20171110,教学组ID为 1
作业ID为 47,名称为 作业8-1-20171110,教学组ID为 1
作业ID为 164,名称为 作业16-3-20180313,教学组ID为 6
作业ID为 104,名称为 作业13-2-20180307,教学组ID为 5
作业ID为 147,名称为 作业14-1-20180312,教学组ID为 5
作业ID为 53,名称为 作业8-3-20171110,教学组ID为 1
作业ID为 9,名称为 作业3-3-20171031,教学组ID为 3
作业ID为 15,名称为 作业4-1-20171031,教学组ID为 2
作业ID为 120,名称为 作业19-2-20180312,教学组ID为 4