【Java】JDBC快速入门

JDBC快速入门

JDBC 详细入门教程 - 以 MySQL 为例

JDBC(Java Database Connectivity)是 Java 语言用于与数据库交互的标准 API。本教程将指导你如何使用 JDBC 连接到 MySQL 数据库,并执行不同类型的查询。

步骤 1: 添加 JDBC 驱动

首先,需要下载 MySQL 的 JDBC 驱动(通常是一个 .jar 文件),并将其添加到项目的类路径中。
一般需要将jar包的版本对应MySQL服务的版本。

jar包需要去Maven仓库官网下载

Maven官网

下载完成之后导入到lib文件目录下(我的MySQL服务版本是8.0,所以导入8.0版本的jar包驱动)
如果不知道MySQL服务版本的可以直接在windows任务栏搜索mysql server
在这里插入图片描述

加到lib文件目录下之后可以直接复制粘贴jar包,然后右键jar包选择添加为库
在这里插入图片描述

导入驱动类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;

步骤 2: 加载驱动

使用 Class.forName() 方法加载 MySQL 驱动。

Class.forName("com.mysql.cj.jdbc.Driver");

某些低版本的驱动包名为

Class.forName("com.mysql.jdbc.Driver");

步骤 3: 建立连接

使用 DriverManager.getConnection() 方法建立与 MySQL 数据库的连接。

Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/mydb?useSSL=false", "username", "password"
);
	

这里的url就是JDBC连接mysql服务的地址,可以忽略连接,在localhost:3306之后直接写数据库名,?后面可以配置时区等参数,详情请查询mysql官网

这里的username和password是mysql的账号密码

步骤 4: 创建语句

创建一个 StatementPreparedStatement 对象来执行 SQL 语句。

Statement stmt = conn.createStatement();

步骤 5: 执行查询

有多种方式可以执行查询,具体取决于你的需求。

5.1 使用 Statement 执行简单查询

适用于不包含参数的查询。

ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
5.2 使用 PreparedStatement 执行带参数的查询

更安全,可以防止 SQL 注入。

PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM mytable WHERE column1 = ?");
pstmt.setString(1, "value1");
ResultSet rs = pstmt.executeQuery();
5.3 使用 Statement 执行更新

用于 INSERT、UPDATE 或 DELETE 语句。

int rowsAffected = stmt.executeUpdate("UPDATE mytable SET column1 = 'value1' WHERE column2 = 'value2'");
5.4 使用 PreparedStatement 执行带参数的更新

同样更安全,可以防止 SQL 注入。

PreparedStatement pstmt = conn.prepareStatement("UPDATE mytable SET column1 = ? WHERE column2 = ?");
pstmt.setString(1, "value1");
pstmt.setString(2, "value2");
int rowsAffected = pstmt.executeUpdate();

步骤 6: 处理结果

对于查询,需要遍历 ResultSet

while (rs.next()) {
    System.out.println(rs.getString("column1") + " " + rs.getInt("column2"));
}

步骤 7: 关闭连接

最后,关闭所有资源。

rs.close();
stmt.close();
pstmt.close();
conn.close();

运行代码前请先打开mysql服务及其对应数据库

完整示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;

public class JdbcExample {
    public static void main(String[] args) {
        try {
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接
            Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/mydb?useSSL=false", "username", "password"
            );
            // 创建语句
            Statement stmt = conn.createStatement();
            PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM mytable WHERE column1 = ?");
            // 执行查询
            ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
            pstmt.setString(1, "value1");
            ResultSet rs2 = pstmt.executeQuery();
            // 处理结果
            while (rs.next()) {
                System.out.println(rs.getString("column1") + " " + rs.getInt("column2"));
            }
            while (rs2.next()) {
                System.out.println(rs2.getString("column1") + " " + rs2.getInt("column2"));
            }
            // 关闭连接
            rs.close();
            rs2.close();
            stmt.close();
            pstmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace(); //若SQL执行出错则抛异常
        }
    }
}

这个示例展示了如何使用 JDBC 连接到 MySQL 数据库,并执行不同类型的查询。记得根据你的数据库配置更改连接字符串、用户名和密码。

附:代码优化(降低耦合性,提高阅读性)

import java.sql.*; // *代表所有

public class JdbcExample {
    public static void main(String[] args) throws Exception {
    		String url =
    		"jdbc:mysql://localhost:3306/mydb?useSSL=false";
			String username = "root";
			String password = "123456";
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接
            Connection conn = DriverManager
            .getConnection(url, username, password);
            // 创建语句
            Statement stmt = conn.createStatement();
            String sql1="SELECT * FROM mytable WHERE column1 = ?";
            String sql2="SELECT * FROM mytable";
            PreparedStatement pstmt = conn.prepareStatement(sql1);
            // 执行查询
            ResultSet rs = stmt.executeQuery(sql2);
            pstmt.setString(1, "value1");
            ResultSet rs2 = pstmt.executeQuery();
            // 处理结果
            while (rs.next()) {
                System.out.println(rs.getString("column1") + " " + rs.getInt("column2"));
            }
            while (rs2.next()) {
                System.out.println(rs2.getString("column1") + " " + rs2.getInt("column2"));
            }
            // 关闭连接,关闭顺序不可乱
            rs.close();
            rs2.close();
            stmt.close();
            pstmt.close();
            conn.close();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七洛殇Atrosenet.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值