用IDEA从头创建一个jdbc项目修改数据库数据(mysql+navicat)
约 1223 字大约 4 分钟
2025-07-11
JDBC
是 java 访问数据库的基石,JDO, Hibernate 等只是更好的封装了 JDBC。
创建项目
IDEA 新建一个空项目或者空 module 选中 maven
安装 jdbc 驱动
在 pom.xml
中写入
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
刷新 maven,等待依赖下载完成。
编写代码
jdbc 访问数据库步骤:
1. 加载 mysql 驱动
2. 获取连接对象
3. 创建命令对象
4. 编写sql命令
5. 执行sql命令 返回结果
6. 处理结果
7. 释放资源
JDBC API
JDBC API 是⼀系列的接⼝,它统⼀和规范了应⽤程序与数据库的连接、执⾏ SQL 语句,并到得到返回结果等各类操作。声明在 java.sql 与 javax.sql 包中。
【谐音记忆:jdbc的创始人(DCSR)】
- DriverManager类 管理不同的驱动
- Connection 接⼝ 应⽤和数据库的连接
- Statement 接⼝ ⽤于执⾏ sql 语句
- ResultSet 接⼝ 保存查询的结果
基础使用(查询)
如要访问的数据库是 navicat,数据库名字是 yssh,表名字是 jdbc_user
先设置参数如下:
// 0. 设置参数
String url = "jdbc:mysql://localhost:3306/yssh?serverTimezone=GMT%2B8";
String user = "root";
String password = "1234";
// 1. 加载 mysql 驱动
Class.forName("com.mysql.cj.jdbc.Driver");// 反射
System.out.println("加载 mysql驱动成功");
// 2. 获取连接对象
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("获取连接对象成功");
// 3. 创建命令对象
Statement statement = connection.createStatement();
// 4. 编写sql命令
String sql = "select * from jdbc_user";
// 5. 执行sql命令 返回结果
if (connection == null) {
System.out.println("判断连接对象:连接失败");
return;
}
System.out.println("判断连接对象:连接成功");
ResultSet resultSet = statement.executeQuery(sql);
// 6. 处理返回的结果
while (resultSet.next()){
// ResultSet游标最初定位在第一行之前;对next方法的第一次调用使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。
Object id = resultSet.getObject(1);
Object name = resultSet.getString(2);
Object age = resultSet.getInt(3);
Object grade = resultSet.getString(4);
System.out.println("\33[0m" + id + " " + name + " " + age + " " + grade);
}
// 7. 关闭资源
resultSet.close();
statement.close();
connection.close();
点击运行,查询结果如下:
插入数据
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 0. 设置参数
String url = "jdbc:mysql://localhost:3306/yssh?serverTimezone=GMT%2B8";
String user = "root";
String password = "1234";
// 1. 加载 mysql 驱动
Class.forName("com.mysql.cj.jdbc.Driver");// 反射
System.out.println("加载 mysql 驱动成功");
// 2. 获取连接对象
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("获取连接对象成功");
// 3. 创建命令对象
Statement statement = connection.createStatement();
insertUser(statement);
queryUser(statement);
// 7. 关闭资源
statement.close();
connection.close();
}
public static void insertUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "INSERT INTO `jdbc_user` ( `name`, `age`, `grade`) VALUES ( 'eva', '66', '68');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
运行结果如下:
更新数据
public static void updateUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "UPDATE `jdbc_user` SET `age`='66', `grade`='66' WHERE (`name`='EVA');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
然后在 main 中调用,运行结果如下:
删除数据
public static void delUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "DELETE FROM `jdbc_user` WHERE (`id`='7');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
然后在 main 中调用,运行结果如下:
全部代码
package com.example;
import java.sql.*;
/**
* jdbc访问数据库步骤:
* // 1. 注册驱动(加载驱动)
* // 2. 获取连接对象
* // 3. 创建命令对象
* // 4. 编写sql命令
* // 5. 执行sql命令 返回结果
* // 6. 处理结果
* // 7. 释放资源
*/
public class Main {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 0. 设置参数
String url = "jdbc:mysql://localhost:3306/yssh?serverTimezone=GMT%2B8";
String user = "root";
String password = "1234";
// 1. 加载 mysql 驱动
Class.forName("com.mysql.cj.jdbc.Driver");// 反射
System.out.println("加载 mysql 驱动成功");
// 2. 获取连接对象
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("获取连接对象成功");
// 3. 创建命令对象
Statement statement = connection.createStatement();
// insertUser(statement);
// updateUser(statement);
delUser(statement);
queryUser(statement);
// 7. 关闭资源
statement.close();
connection.close();
}
public static void queryUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "select * from jdbc_user";
// 5. 执行sql命令 返回结果
ResultSet resultSet = statement.executeQuery(sql);
// 6. 处理返回的结果
while (resultSet.next()) {
Object id = resultSet.getObject(1);
Object name = resultSet.getString(2);
Object age = resultSet.getInt(3);
Object grade = resultSet.getString(4);
System.out.println(" " + id + " " + name + " " + age + " " + grade);
}
// 7. 关闭资源
resultSet.close();
}
public static void insertUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "INSERT INTO `jdbc_user` ( `name`, `age`, `grade`) VALUES ( 'eva', '66', '68');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
public static void updateUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "UPDATE `jdbc_user` SET `age`='66', `grade`='66' WHERE (`name`='EVA');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
public static void delUser(Statement statement) throws SQLException {
// 4. 编写sql命令
String sql = "DELETE FROM `jdbc_user` WHERE (`id`='7');";
// 5. 执行sql命令 返回结果
statement.executeUpdate(sql);
}
}