【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

JDBC的原理

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

  1. 驱动程序管理 :JDBC使用不同的数据库驱动程序来连接不同类型的数据库。每种数据库都有相应的JDBC驱动程序,负责处理Java应用程序与数据库之间的通信。常见的驱动程序类型包括:

    • JDBC-ODBC桥接驱动 :将JDBC调用转换为ODBC调用。
    • 原生API驱动 :通过特定数据库的API直接连接数据库。
    • 网络协议驱动 :通过中间层(如应用服务器)以网络协议访问数据库。
    • 建立连接 :应用程序通过DriverManager获取数据库连接。一般步骤包括:

    • 注册数据库驱动。

    • 使用DriverManager.getConnection()方法获取连接对象。
    • 执行SQL语句 :获取到连接后,可以通过Connection对象创建StatementPreparedStatement对象,来执行SQL语句。在执行过程中,SQL语句会被发送到数据库,并返回结果集。
  2. 处理结果 :执行完SQL语句后,结果通常会以ResultSet对象的形式返回。开发者可以通过ResultSet对象读取查询结果,并进行相应处理。

  3. 事务管理 :JDBC支持对数据库的事务管理。可以通过Connection对象的方法来手动控制事务,比如提交、回滚等。

  4. 关闭资源 :操作完成后,应该关闭ResultSetStatementConnection等资源,以防止内存泄漏。

总体来说,JDBC提供了一种与数据库进行交互的标准方式,使得Java程序能够高效地访问和操作各种数据库,同时保持良好的跨平台性。

JDBC优势:

  • Java语言访问数据库操作完全面向抽象接口编程。
  • 开发数据库应用不用限定在特定数据库厂商的API。
  • 程序的可移植性大大增强。

JDBC的使用

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

如何下载驱动包

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

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

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

搜索完,出现以下选项,选择第二个进入。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

进入该页面后,我们发现有各种版本的驱动包。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

那么我们如何选择版本呢?这取决于你的MySQL版本 ,如果你的MySQL版本是8.0,那么选择8.0x系列的,如果你的MySQL版本是5.1,那么选择5.1x系列的。这里我的MySQL是5.1版本,我用5.1x系列做一个示例。

下滑找到你所需要的版本并点击,这里我下载的是5.1.49版本。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

接着我们进入下一个界面,找到 “jar” 字样,点击即可下载。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

将驱动包添加到项目依赖

我们下载好驱动包就要将其添加到项目依赖了,接下来跟着我的操作。

我们打开IDEA,右击项目文件,选择新建 "Directory" 模块。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

我们一般将该模块名取为 “lib” ,用来存放第三方库。

接下来找到你的驱动包 “CTRL + C” 复制,接着到IDEA中选中 "lib" 模块 “CTRL + V” 粘贴,操作完后呈现以下状态。选择 ok 就好了。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

接下来我们还有最后一步操作,右击该驱动包,选择 “Add as Library...”

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

最后操作完呈现以下状态既是成功了。

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

2.建立数据库连接

Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:

  • 一种是通过DriverManager(驱动管理类)的静态方法获取:

    ```java
    //注册数据库驱动: 加载适当的数据库驱动程序,可以通过反射方式来加载。
    try {
    Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL数据库示例
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    //建立数据库连接: 使用DriverManager获取数据库连接,提供数据库的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对象:

    java
    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()都是将Conncetion连接对象回收。

3.创建操作命令(Statement)

Statement对象

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

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

创作操作命令有多种方式,这里我使用其中一种是开发中常用的。

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

4.执行SQL语句

主要掌握两种执行SQL的方法:

  • executeQuery() 方法执行后返回单个结果集的,通常用于select语句。
  • executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句。

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

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

第二种:执行select语句。

```java
//处理结果集: 遍历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()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

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

```java
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 表,并且插入多条数据。

```sql
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客户端执行的语句。

```java
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/4814.html

(0)
LomuLomu
上一篇 2024 年 12 月 30 日
下一篇 2024 年 12 月 30 日

相关推荐

  • Java毕设项目:基于Springboot影视推荐网站系统设计与实现开题报告

    博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。 项目配有对应开发文档、开题报告、任务书、PPT等,提供毕业设计论文辅导。 项目都录了发布和…

    2025 年 1 月 6 日
    19100
  • manim边学边做–改变动画速度

    ChangeSpeed类是Manim库中用于修改动画速度的类。 它提供了一种灵活的方式来控制动画的播放速度,使动画在不同时间段内以不同的速度播放,从而创造出更加丰富多样的动画效果。 比如,在创建包含多个元素动画的场景中,通过ChangeSpeed可以精确控制不同元素在不同时间点的移动速度,实现复杂的动画节奏编排。 1. 动画概述 与之前介绍的那些动画类不同,…

    2024 年 12 月 31 日
    12200
  • Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

    探索Java Swing的奇妙世界 目录概览 引言 核心理念 组件与容器的奥秘 GridLayout(网格布局) GridBagLayout(网格包布局) FlowLayout(流式布局) BorderLayout(边框布局) BoxLayout(箱式布局) 事件监听的艺术 引言 核心理念 Java Swing 的架构精髓 Java Swing,这个为Jav…

    2024 年 12 月 28 日
    14800
  • 华为OD机试E卷 –分苹果 –24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 A、B 两个人把苹果分为两堆,A 希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9 (1100 + 0101 = 9),B 的计算规则是十进制加法,包括正常进位,B 希…

    未分类 2025 年 1 月 19 日
    16500
  • build报错:Your build is currently configured to use incompatible Java 21.0.3 and Gradle 5.4.1Cannot…

    报错显示 报错如图。 报错原因 JDK和gradle版本不一致。 成功解决方案 将jdk版本改为1.8,问题解决。 尝试过未成功的方案 升级gradle版本,升级后报错如下。

    2025 年 1 月 21 日
    20400

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信