JDBC 是Java 数据库连接,即 Java DataBase Connectivity。JDBC 可让Java 通过程序操作关系型数据库,可基于驱动程序实现与数据库的连接与操作。JDBC 有统一的API ,提供一致的开发过程。其功能强大,执行效率高,可处理海量数据。
开发准备
在Navicat 中新建一个数据库,注意字符集 的选择,如下图所示:
然后运行 SQL 文件创建的表如下图:
接着在mysql 官网下载 mysql8驱动程序如下:
实际开发
1,加载并注册JDBC 驱动
在idea 中创建一个新工程,然后在工程名上右键,新建一个目录“lib”,用于添加所需依赖:
接着在idea中,执行 File -> Project Structure -> Modules -> Dependencies ,接着点击右边的 ”+“ ,添加mysql 驱动依赖,如下图所示:
然后就可以通过如下语句在程序中加载并注册JDBC 驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
Class.forName 用于加载指定的JDBC 驱动类,其本质是通知JDBC 注册这个驱动类。
2,创建数据库连接
通过如下程序语句创建数据库连接:
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
"root", "123456"
);
- Connection 对象用于JDBC 与数据库的网络通信对象,所有数据库的操作都是建立在Connection 基础上。
- DriverManager 用于注册 / 管理JDBC 驱动程序,DriveManager.getConnection(连接字符串,用户名,密码),其返回值Connection 对象,对应数据库的物理网络连接。
3,创建Statement 对象
通过如下程序语句实现Statement 对象的创建:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
说明:ResultSet 表示结果集。
4,遍历查询结果
如下程序语句可以实现结果集的遍历查询:
while (rs.next()) {
Integer eno = rs.getInt(1); //eno
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}
5,关闭连接,释放资源
关闭连接,这里我们可以直接通过语句:
conn.close();
即可,因为底层的连接被关闭,其他的连接自然就被关闭了。
完整代码实现
package com.imooc.jdbc.sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 标准JDBC操作五步骤
*/
public class StandardJDBCSample {
public static void main(String[] args) {
Connection conn = null;
try {
//1. 加载并注册JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 创建数据库连接
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
"root", "123456"
);
//3. 创建Statement对象
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
//4. 遍历查询结果
while (rs.next()) {
Integer eno = rs.getInt(1); //eno
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
if (conn != null && conn.isClosed() == false) {
//5. 关闭连接,释放资源
conn.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
程序运行结果如下:
特别说明:以上程序只是为了说明应用 JDBC 开发的标准流程。