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 日

相关推荐

  • JavaScript 延迟加载的方法( 7种 )

    JavaScript脚本的延迟加载(也称为懒加载)是指在网页的主要内容已经加载并显示给用户之后,再加载或执行额外的JavaScript代码。这样做可以加快页面的初始加载速度,改善用户体验,并减少服务器的压力。 以下是几种常见的延迟加载JavaScript的方法: defer 属性: 使用 async 属性: async 属性告诉浏览器立即开始下载脚本,并且在…

    2025 年 1 月 16 日
    30400
  • Python版本与Anaconda适配情况深度剖析

    目录 一、Anaconda与Python关联剖析 二、版本适配对照表(持续更新) 三、实际环境搭建指引 最新版本安装(推荐) 多版本环境创建 镜像加速设置 四、下载资源集合 五、最优实践提示 核心要点 :不同版本的Anaconda内嵌特定Python版本,安装最新的Anaconda3能灵活创建多种Python环境,解决依赖冲突状况。 一、Anaconda与P…

    2025 年 9 月 18 日
    8600
  • C++中第三方RabbitMQ库的深入探究

    文章标题: 对C++中第三方RabbitMQ库的深度剖析 文章内容: 目录 1.引言 2.安装 1.RabbitMq 2.客户端库 3.AMQP-CPP基础应用 1.概述 2.运用 4.类与接口 1.Channel 2.ev 5.应用 1.publish.cc 2.consume.cc 3.makefile 1.引言 RabbitMQ:是一种消息队列组件,能…

    2025 年 8 月 12 日
    7400
  • 🚀 2025年最新IDEA激活码分享:永久破解JetBrains全家桶教程(附IDEA破解补丁)

    💻 适用软件 本教程适用于JetBrains全家桶所有产品,包括但不限于:- IntelliJ IDEA 🔧- PyCharm 🐍- DataGrip 🗄️- GoLand 🦾- 其他JetBrains系列IDE 先上最新IDEA 2024.3版本破解成功的效果图,可以看到已经完美激活到2099年!🎉 📥 第一步:下载IDEA安装包 如果已经安装可以跳过这一…

    2025 年 6 月 15 日
    3.0K00
  • 2025年最新PyCharm激活码分享 | 永久破解PyCharm专业版教程(支持2099年)

    JetBrains旗下的PyCharm是Python开发者最喜爱的IDE之一,但专业版需要付费订阅。本文将手把手教你如何永久激活PyCharm至2099年,适用于Windows/Mac/Linux系统,支持2024.3.5等最新版本! 准备工作:下载PyCharm安装包 已安装用户可跳过此步骤 访问PyCharm官网:https://www.jetbrain…

    2025 年 5 月 9 日
    2.0K00

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信