当前位置: 首页 > article >正文

13、Java JDBC 编程:连接数据库的桥梁

嘿,Java 开发者们!在这篇博客中,我们将一起探索 Java 数据库连接(JDBC)编程。JDBC 是 Java 程序与各种数据库系统进行交互的标准 API,它就像一座桥梁,让我们能够使用 Java 语言来操作数据库,如存储、查询、更新和删除数据等。无论你是在开发一个小型的桌面应用程序,还是一个大型的企业级应用,掌握 JDBC 编程都是非常重要的。让我们一起踏上 JDBC 编程之旅,解锁数据库操作的强大功能吧!

一、JDBC 概述

1. 什么是 JDBC?

JDBC(Java Database Connectivity)是 Java 提供的一组 API,允许 Java 程序连接到不同的数据库系统,如 MySQL、Oracle、PostgreSQL 等。它定义了一套标准的接口,不同的数据库厂商提供实现这些接口的驱动程序,使得我们可以用统一的方式编写数据库操作代码,而不必关心具体使用的是哪个数据库。

2. JDBC 的基本组件

  • DriverManager:用于管理一组 JDBC 驱动程序,负责建立与数据库的连接。
  • Connection:代表与数据库的连接。
  • Statement:用于执行静态 SQL 语句。
  • PreparedStatement:用于执行预编译的 SQL 语句,提供了更好的性能和安全性。
  • ResultSet:存储 SQL 查询的结果集。

二、准备工作:添加数据库驱动

在使用 JDBC 之前,需要添加相应数据库的 JDBC 驱动。对于 Maven 项目,可以在 pom.xml 中添加依赖,例如对于 MySQL:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

三、建立数据库连接

1. 加载驱动程序

使用 Class.forName() 方法加载数据库驱动。对于 MySQL 8.0 及以上:

try {
    Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

2. 建立连接

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

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcConnectionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password)) {
            System.out.println("连接成功!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

四、执行 SQL 语句

1. 使用 Statement

使用 Statement 执行简单的 SQL 语句。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcStatementExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password);
             Statement statement = connection.createStatement()) {
            // 创建表
            String createTableSql = "CREATE TABLE IF NOT EXISTS students (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), age INT)";
            statement.executeUpdate(createTableSql);

            // 插入数据
            String insertSql = "INSERT INTO students (name, age) VALUES ('Alice', 25)";
            statement.executeUpdate(insertSql);

            // 更新数据
            String updateSql = "UPDATE students SET age = 26 WHERE name = 'Alice'";
            statement.executeUpdate(updateSql);

            // 删除数据
            String deleteSql = "DELETE FROM students WHERE name = 'Alice'";
            statement.executeUpdate(deleteSql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2. 使用 PreparedStatement

使用 PreparedStatement 执行预编译的 SQL 语句,避免 SQL 注入。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JdbcPreparedStatementExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password);
             PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO students (name, age) VALUES (?,?)")) {
            preparedStatement.setString(1, "Bob");
            preparedStatement.setInt(2, 30);
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

五、处理结果集(ResultSet)

使用 ResultSet 存储查询结果,并对其进行处理。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcResultSetExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password);
             Statement statement = connection.createStatement()) {
            String querySql = "SELECT * FROM students";
            ResultSet resultSet = statement.executeQuery(querySql);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

六、事务管理

使用 JDBC 可以进行事务管理,确保一系列操作的原子性。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcTransactionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password);
             Statement statement = connection.createStatement()) {
            connection.setAutoCommit(false);

            try {
                statement.executeUpdate("INSERT INTO students (name, age) VALUES ('Charlie', 35)");
                statement.executeUpdate("UPDATE students SET age = 36 WHERE name = 'Charlie'");
                connection.commit();
                System.out.println("事务提交成功!");
            } catch (SQLException e) {
                connection.rollback();
                System.out.println("事务回滚!");
                e.printStackTrace();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

七、总结与实践

JDBC 编程是 Java 开发中连接数据库的关键技术,通过它我们可以方便地操作各种数据库。我们可以使用 Statement 或 PreparedStatement 执行 SQL 语句,使用 ResultSet 处理查询结果,还可以进行事务管理。

现在你可以尝试使用 JDBC 开发一个简单的数据库应用程序,例如学生信息管理系统,实现学生信息的增删改查功能。在实践中,你会更加深入地理解 JDBC 的强大功能和使用技巧。如果你在使用 JDBC 过程中遇到任何问题,欢迎在评论区留言,让我们一起探索如何更好地利用 JDBC 实现数据库操作,让我们的 Java 程序和数据库无缝对接。


http://www.kler.cn/a/522788.html

相关文章:

  • 16届蓝桥杯寒假刷题营】第2期DAY5IOI赛
  • 第05章 11 动量剖面可视化代码一则
  • Ubuntu 20.04安装Protocol Buffers 2.5.0
  • 健康AI应用的逆袭:如何用“死亡时钟”撬动用户增长和媒体关注,实现应用榜快速排名第六
  • 【算法学习笔记】36:中国剩余定理(Chinese Remainder Theorem)求解线性同余方程组
  • 【数据结构】 并查集 + 路径压缩与按秩合并 python
  • Java并发编程实战:深入探索线程池与Executor框架
  • WordPress Web Directory Free插件本地包含漏洞复现(附脚本)(CVE-2024-3673)
  • 更换keil工程芯片到103c8t6(HAL库版本)
  • 豆包MarsCode:字符串字符类型排序问题
  • JS宏进阶:控件与事件
  • java:read weather info from openweathermap.org
  • 书生大模型实战营2
  • Semaphore 与 线程池 Executor 有什么区别?
  • 嵌入式知识点总结 Linux驱动 (三)-文件系统
  • Linux 35.6 + JetPack v5.1.4之编译器升级
  • 在Rust应用中访问.ini格式的配置文件
  • vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题
  • 第3章 基于三电平空间矢量的中点电位平衡策略
  • 无人机+固定机巢 ,空地协同作业技术详解
  • Hive:Hive Shell技巧
  • 回顾:Maven的环境搭建
  • 第32章 测试驱动开发(TDD)的原理、实践、关联与争议(Python 版)
  • 【设计模式-行为型】迭代器模式
  • 构建自定义 AI 模型服务:集成到 Spring AI 处理特定任务
  • 算法刷题Day28:BM66 最长公共子串