JDBC
- 通过Java访问MySQL数据库
JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。 JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。
操作步骤
- 导入驱动 jar 包
a.复制 jar 到项目的 libs 目录下
b.右键–>Add As Library - 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
- 获取数据库连接对象 Connection
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/teng?serverTimezone=Asia/Shanghai", "user", "password");
(另外说明一下):JDBC 连接 Mysql8 com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone:在设定时区的时候,如果设定 serverTimezone=UTC,会比中国时间早 8 个小时,如果在中国,可以选择 Asia/Shanghai 或 者Asia/Hongkong,例如: serverTimezone=Shanghai。 - 定义 sql
String sql = "select * from emp";
- 获取执行 sql 语句的对象 Statement
Statement statement = connection.createStatement();
- 执行 sql,接受返回结果
ResultSet rs = statement.executeQuery(sql);
executeQuery(String sql)
:用于向数据发送查询语句。
executeUpdate(String sql)
:用于向数据库发送 insert、update 或delete 语句。 - 处理结果
Jdbc 程序中的 ResultSet 用于代表 SQL 语句的执行结果。Resultset 封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
String job = rs.getString("job");
int mgp = rs.getInt("mgp");
Date hiredate = rs.getDate("hiredate");
double sal = rs.getDouble("sal");
double comm = rs.getDouble("comm");
int deptno = rs.getInt("deptno");
- 释放资源(先开后关)
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}