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 日

相关推荐

  • 手动部署前后端分离的项目到本地

    1.准备工作 使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar 打包vue项目 npm install -g @vue/cli安装Vue CLI 在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹 将打包好的文件通过远程仓库中转至docker虚拟机 在虚拟机…

    2025 年 1 月 11 日
    31000
  • 2024 PyCharm最新激活码,PyCharm永久免费激活码2025-01-13 更新

    PyCharm 2024最新激活码 以下是最新的PyCharm激活码,更新时间:2025-01-13 🔑 激活码使用说明 1️⃣ 复制下方激活码 2️⃣ 打开 PyCharm 软件 3️⃣ 在菜单栏中选择 Help -> Register 4️⃣ 选择 Activation Code 5️⃣ 粘贴激活码,点击 Activate ⚠️ 必看!必看! 🔥 获取最…

    2025 年 1 月 13 日
    1.2K00
  • Python技巧:实例剖析推导式、条件表达式及Lambda函数

    文章标题: Python技巧:实例解析推导式、条件表达式与Lambda函数 文章内容: 文章目录 1. 推导式 1.1 列表推导式 1.2 集合推导式 1.3 字典推导式 2.4 生成器推导式 2. 条件表达式 3. Lambda函数 依照常规,先做声明:本文是本人学习过程中的心得,虽参考了他人的宝贵见解与成果,但内容或许存在不准确之处。若发现文中错误,还望…

    2025 年 7 月 22 日
    4900
  • python SQLAlchemy ORM——从零开始学习 01 安装库

    01基础库 1-1安装 依赖库:sqlalchemy “`python pip install sqlalchemy #直接安装即可 “` 1-2导入使用 这里讲解思路【个人的理解】,具体写其实就是这个框架: 导入必要的接口【有创建engine以及declarative_base】 通过create_engine接口创建engine,根据翻译可以翻译成引…

    2025 年 1 月 13 日
    36000
  • IDEA与PyCharm激活码教程 – 快速破解到2099年

    本教程适用于PyCharm 2025、IDEA、DataGrip、Goland等Jetbrains产品,支持全家桶激活!无论您使用的是Windows、Mac还是Linux,均可按照本教程成功激活PyCharm 2025至2097年。 激活截图展示 首先,我们来展示一下最新版本的PyCharm 2025破解成功的截图,如下所示,您可以看到已经成功激活至2097…

    2025 年 4 月 22 日
    95800

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信