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