Java操作MySQL数据库:零基础轻松上手

Java操作MySQL数据库:零基础轻松上手

JDBC的原理

JDBC(Java Database Connectivity)是Java用于连接与操作数据库的API,它能让Java应用程序和各类数据库进行交互,以下是JDBC的基本原理:

  1. 驱动程序管理:JDBC借助不同的数据库驱动程序来连接不同类型的数据库。每种数据库都有对应的JDBC驱动程序,负责处理Java应用程序与数据库间的通信。常见的驱动程序类型有:
    • JDBC - ODBC桥接驱动:把JDBC调用转化为ODBC调用。
    • 原生API驱动:通过特定数据库自身的API直接连接数据库。
    • 网络协议驱动:通过中间层(如应用服务器)以网络协议访问数据库。
  2. 建立连接:应用程序通过DriverManager获取数据库连接,一般步骤为:
    • 注册数据库驱动。
    • 利用DriverManager.getConnection()方法获取连接对象。
  3. 执行SQL语句:获取连接后,可通过Connection对象创建StatementPreparedStatement对象来执行SQL语句,执行时SQL语句会发送到数据库并返回结果集。
  4. 处理结果:SQL语句执行完后,结果通常以ResultSet对象形式返回,开发者能通过ResultSet对象读取查询结果并进行相应处理。
  5. 事务管理:JDBC支持对数据库的事务管理,可通过Connection对象的方法手动控制事务,如提交、回滚等。
  6. 关闭资源:操作完成后,需关闭ResultSetStatementConnection等资源,防止内存泄漏。

总体而言,JDBC提供了与数据库交互的标准方式,让Java程序能高效访问和操作各类数据库,且具备良好跨平台性。

JDBC优势
- Java语言访问数据库操作完全面向抽象接口编程。
- 开发数据库应用无需局限于特定数据库厂商的API。
- 程序可移植性大幅增强。

JDBC的使用

1.准备数据库驱动包,并添加到项目的依赖中

下载驱动包的方法

推荐一个官方网址:中央仓库

打开该网址后在上方搜索“mysql”。

搜索完成后出现相关选项,选择第二个进入。

进入对应页面后,能看到有各种版本的驱动包。

选择版本时需依据自身MySQL版本,若MySQL版本是8.0,选8.0x系列;若是5.1版本,选5.1x系列。这里以MySQL 5.1版本为例,选择5.1x系列。

下滑找到所需版本并点击,这里下载5.1.49版本。

进入下一个界面,找到带“jar”字样的链接并点击下载。

将驱动包添加到项目依赖

下载好驱动包后要添加到项目依赖中,操作如下:

打开IDEA,右击项目文件,选择新建“Directory”模块。

通常将该模块命名为“lib”,用于存放第三方库。

找到驱动包,用“CTRL + C”复制,然后到IDEA中选中“lib”模块,用“CTRL + V”粘贴,操作完成后选择“ok”。

最后右击该驱动包,选择“Add as Library...”,操作完成后呈现相应成功状态。

2.建立数据库连接

Connection接口的实现类由数据库提供,获取Connection对象通常有两种方式:
- 方式一:通过DriverManager(驱动管理类)的静态方法获取:

// 注册数据库驱动,可通过反射方式加载适当的数据库驱动程序
try {
    Class.forName("com.mysql.cj.jdbc.Driver"); // 以MySQL数据库为例
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
// 建立数据库连接,提供数据库的URL、用户名和密码
String url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false"; // 数据库URL,"testdb"需换成要操作的数据库名,其余部分无需修改
String user = "root"; // 用户名,一般默认是"root"
String password = "your_password"; // 密码,填写自己的MySQL密码

Connection connection = null;
try {
    connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
    e.printStackTrace();
}
  • 方式二:通过DataSource(数据源)对象获取,实际应用中常用DataSource对象:
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl
       ("jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false");// 数据库URL,"testdb"需换成要操作的数据库名,其余部分无需修改
((MysqlDataSource)dataSource).setUser("root"); // 用户名,一般默认是"root"
((MysqlDataSource)dataSource).setPassword("your_password");// 密码,填写自己的MySQL密码
Connection connection = dataSource.getConnection();
  • 两种方式的区别
    1. 用DriverManager类获取的Connection连接不可重复利用,使用完释放资源时,通过connection.close()关闭物理连接。
    2. DataSource提供连接池支持,初始化时会创建一定数量的数据库连接,这些连接可复用,使用完释放资源调用connection.close()是回收Connection连接对象。

3.创建操作命令(Statement)

Statement对象

Statement对象主要用于将SQL语句发送到数据库。JDBC API主要提供了三种Statement对象。

创作操作命令有多种方式,这里采用开发中常用的一种:

String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);

4.执行SQL语句

主要掌握两种执行SQL的方法:
- executeQuery()方法执行后返回单个结果集,通常用于select语句。
- executeUpdate()方法返回受影响的行数,为整数,通常用于update、insert、delete语句。

第一种:执行update、insert、delete语句:

int i = statement.executeUpdate();// 返回影响的行数i
System.out.println(i);// 打印影响的行数i

第二种:执行select语句:

// 处理结果集,遍历ResultSet对象获取查询结果
try {
    while (resultSet.next()) {
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        System.out.println("ID: " + id + ", Name: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet对象

ResultSet对象称为结果集,代表符合SQL语句条件的所有行,通过一套getXXX方法访问行中数据。ResultSet里的数据按行排列,每行有多个字段,有记录指针,指针所指数据行为当前数据行,只能操作当前数据行。若要获取某条记录,使用ResultSet的next()方法;若要获取所有记录,使用while循环。

5.释放资源(关闭结果集,命令,连接)

try {
    if (resultSet != null) resultSet.close();
    if (statement != null) statement.close();
    if (connection != null) connection.close();
} catch (SQLException e) {
    e.printStackTrace();
}

JDBC使用步骤总结

  1. 创建数据库连接Connection
  2. 创建操作命令Statement
  3. 使用操作命令执行SQL
  4. 处理结果集ResultSet
  5. 释放资源

整个代码示例

整合以上步骤,以下是完整的JDBC示例代码:

首先需在MySQL中创建一个school数据库和一个student表,并插入多条数据。

create database school charset utf8;
use school;
create table student (
id int primary key,
name varchar(20) not null);
insert into student values (1,'张三'),(2,'李四'),(3,'王五');

上述代码在MySQL客户端执行。

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {

        // 建立数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/school?characterEncoding=utf8&useSSL=false";
        String user = "root";
        String password = "your_password";
        Connection connection = null;

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

            // 执行SQL查询
            String sql = "SELECT * FROM student";
            ResultSet resultSet = statement.executeQuery(sql);

            // 处理结果集
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }

            // 关闭资源
            resultSet.close();
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

该示例展示了使用JDBC连接MySQL数据库、执行查询并处理结果的方法,请根据实际情况修改数据库URL、用户名和密码。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12757.html

(0)
LomuLomu
上一篇 2025 年 7 月 5 日
下一篇 2025 年 7 月 5 日

相关推荐

  • 2025年最新DataGrip永久破解教程(附激活码/注册码)🔥

    还在为DataGrip的激活问题发愁吗?🤔 今天给大家带来一个超详细的破解教程,适用于JetBrains全家桶(IDEA、PyCharm、DataGrip、Goland等),让你轻松使用到2099年!💪 先看看最新版本的破解效果,已经成功激活到2099年啦!🎉 1️⃣ 下载DataGrip安装包 如果你已经下载好了,可以跳过这一步哦~ 访问DataGrip官…

    DataGrip激活码 2025 年 7 月 1 日
    42300
  • 华为OD机试E卷 –游戏分组–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 Js算法源码 python算法源码 java算法源码 c++算法源码 c算法源码 题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。一队的实力可…

    未分类 2025 年 1 月 5 日
    61300
  • MySQL日志系统:SQL更新语句执行揭秘

    文章标题: MySQL日志体系:SQL更新语句执行剖析 文章内容:比如执行这样一条更新语句: update T set c=c+1 where ID=2; 首先,更新语句的执行会经历查询语句的流程。除此之外,更新操作关联到两个日志模块,分别是redo log和binlog。 redo log MySQL在进行更新时运用了WAL(预写日志)技术,关键之处在于先…

    2025 年 8 月 6 日
    12200
  • 🚀 2025年最新IDEA激活码分享:永久破解IDEA全系列教程(附破解补丁下载)

    💻 教程适用性说明 本教程完美适用于Jetbrains全家桶所有产品,包括但不限于:- IntelliJ IDEA 🔧- PyCharm 🐍- DataGrip 🗃️- GoLand 🦾- 其他Jetbrains系列IDE 先给大家看看最新IDEA 2024.3版本破解成功的实锤截图!有效期直接拉到2099年,简直不要太爽!🎉 下面我就手把手教大家如何实现永…

    2025 年 6 月 9 日
    1.2K00
  • Mac版PyCharm破解指南|带你完整激活到2099!

    申明:本教程 PyCharm破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! PyCharm是 JetBrains 推出的开发编辑器,功能强大,适用于 Windows、Mac 和 Linux 系统。本文将详细介绍如何通过破解补丁实现永久激活,解锁所有高级功能。 不管你是什么版本、什么操作系统…

    PyCharm激活码 2025 年 9 月 23 日
    24400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信