0
点赞
收藏
分享

微信扫一扫

【Java 初阶】详解 Mysql 的连接 JDBC

在这里插入图片描述

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

1、什么是

一、什么是 JDBC

JDBC(Java Database Connectivity)是Java语言中用于与关系型数据库进行交互的API(Application Programming Interface)。它提供了一组类和接口,使Java应用程序能够连接、查询和操作各种数据库。

JDBC允许开发人员使用标准的SQL语句来执行数据库操作,如查询数据、插入、更新和删除记录等。它还提供了事务管理、批处理操作和元数据访问等功能。

通过JDBC,开发人员可以使用Java编程语言来构建与任何支持JDBC的关系型数据库进行交互的应用程序。开发人员可以选择适当的JDBC驱动程序来连接不同的数据库系统,如MySQL、Oracle、SQL Server等。

JDBC是Java语言中用于与关系型数据库进行交互的API,它提供了连接、查询和操作数据库的功能,使开发人员能够使用Java编写强大的数据库应用程序。

二、JDBC 的应用场景

JDBC 的应用场景非常广泛,适用于各种需要与关系型数据库进行交互的 Java 应用程序。下面是一些常见的 JDBC 应用场景:

  1. 数据库连接与操作:使用 JDBC 可以连接到各种关系型数据库,执行查询、插入、更新和删除等操作。它提供了执行 SQL 语句的能力,可以对数据库进行灵活的操作。
  2. 数据库事务管理:JDBC 支持事务管理,可以通过开启和提交事务来确保数据库操作的一致性和完整性。它提供了事务的隔离级别和回滚操作等功能。
  3. 数据库连接池:JDBC 连接池是一种管理数据库连接的技术,可以提高应用程序的性能和可伸缩性。通过使用连接池,可以避免频繁地创建和关闭数据库连接,提高数据库访问的效率。
  4. 数据库元数据访问:JDBC 提供了访问数据库元数据的功能,可以获取数据库的结构信息,如表、列、索引等。这对于动态生成 SQL 语句或者进行数据库结构分析非常有用。
  5. 批处理操作:JDBC 支持批处理操作,可以一次性执行多个 SQL 语句,减少与数据库的通信次数,提高效率。
  6. 数据库迁移和同步:通过 JDBC,可以将数据从一个数据库迁移到另一个数据库,或者将数据从文件导入到数据库中。它还可以用于数据库之间的数据同步和复制。

JDBC 可以在各种需要与关系型数据库进行交互的 Java 应用程序中使用,包括 Web 应用程序、桌面应用程序、企业应用程序等。它提供了强大的功能和灵活性,使开发人员能够轻松地操作和管理数据库。

三、JDBC 的四大核心对象

JDBC的四大核心对象是:

  1. Connection(连接):用于与数据库建立连接,并管理与数据库的通信。
  2. Statement(语句):用于执行SQL语句并与数据库进行交互。它可以是静态的(用于执行静态SQL语句)或者是可预编译的(用于执行动态SQL语句)。
  3. ResultSet(结果集):用于存储从数据库中检索的数据。它提供了遍历、访问和操作结果数据的方法。
  4. PreparedStatement(预编译语句):是Statement的子接口,它可以在执行前进行预编译,从而提高执行效率。它还可以通过设置参数来动态地执行SQL语句。

这些对象是在Java中使用JDBC进行数据库操作时的核心组件。它们提供了与数据库的连接、执行SQL语句和处理结果的功能。

四、JDBC 的使用

JDBC(Java Database Connectivity)是Java程序与数据库进行交互的标准API。以下是使用JDBC的一般步骤:

  1. 导入JDBC相关的包:
import java.sql.*;
  1. 加载数据库驱动程序:
Class.forName("com.mysql.jdbc.Driver");
  1. 建立数据库连接:
String url = "jdbc:mysql://localhost:3306/mydatabase"; // 数据库URL
String username = "username"; // 数据库用户名
String password = "password"; // 数据库密码
Connection connection = DriverManager.getConnection(url, username, password);
  1. 创建Statement对象并执行SQL查询或更新:
Statement statement = connection.createStatement();
String sql = "SELECT * FROM mytable";
ResultSet resultSet = statement.executeQuery(sql);
  1. 处理查询结果:
while (resultSet.next()) {
 	// 从结果集中获取数据
    String column1 = resultSet.getString("column1");
    int column2 = resultSet.getInt("column2");
    // 处理数据
}
  1. 关闭连接和释放资源:
resultSet.close();
statement.close();
connection.close();

五、完整代码

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "username";
        String password = "password";
        
        try {
            // Load the MySQL JDBC driver
            Class.forName("com.mysql.jdbc.Driver");
             // Establish the connection
            Connection connection = DriverManager.getConnection(url, username, password);
             // Create a statement
            Statement statement = connection.createStatement();
             // Execute a query
            String sql = "SELECT * FROM mytable";
            ResultSet resultSet = statement.executeQuery(sql);
             // Process the results
            while (resultSet.next()) {
                String column1 = resultSet.getString("column1");
                int column2 = resultSet.getInt("column2");
                System.out.println(column1 + " - " + column2);
            }
             // Close the resources
            resultSet.close();
            statement.close();
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

六、JDBC 的事务控制

JDBC(Java Database Connectivity)提供了对事务控制的支持,允许开发者在Java应用程序中执行事务操作。JDBC事务控制涉及以下几个关键概念和方法:

  1. 开启事务:
connection.setAutoCommit(false);

这将禁用自动提交模式,使得每次执行SQL语句后都需要手动提交或回滚事务。 2. 执行SQL语句:

Statement statement = connection.createStatement();
String sql = "INSERT INTO mytable (column1, column2) VALUES ('value1', 'value2')";
statement.executeUpdate(sql);
  1. 提交事务:
connection.commit();

当所有的SQL语句都执行成功时,调用该方法将提交事务,将更改持久化到数据库。 4. 回滚事务:

connection.rollback();

如果在事务过程中发生了错误或者需要撤销之前的更改,可以调用该方法回滚事务,将数据库恢复到事务开始前的状态。 5. 设置保存点(Savepoint):

Savepoint savepoint = connection.setSavepoint();

可以在事务中设置保存点,以便在回滚时可以选择性地回滚到某个保存点。 6. 释放资源:

statement.close();
connection.close();

在事务操作完成后,需要关闭Statement和Connection对象,释放相关资源。

七、JDBC 的增删改查

JDBC(Java Database Connectivity)是Java程序与数据库进行交互的标准API,它提供了对数据库的增删改查操作。下面是使用JDBC进行增删改查的示例:

  1. 插入数据:
String sql = "INSERT INTO mytable (column1, column2) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password);
    PreparedStatement statement = connection.prepareStatement(sql)) {
    statement.setString(1, value1); // 设置参数值
    statement.setString(2, value2);
    statement.executeUpdate(); // 执行插入操作
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 查询数据:
String sql = "SELECT * FROM mytable";
try (Connection connection = DriverManager.getConnection(url, username, password);
    Statement statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery(sql)) {
    while (resultSet.next()) {
        String column1 = resultSet.getString("column1"); // 获取列值
        String column2 = resultSet.getString("column2");
        // 处理查询结果
    }
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 更新数据:
String sql = "UPDATE mytable SET column1 = ? WHERE id = ?";
try (Connection connection = DriverManager.getConnection(url, username, password);
    PreparedStatement statement = connection.prepareStatement(sql)) {
    statement.setString(1, newValue); // 设置参数值
    statement.setInt(2, id);
    statement.executeUpdate(); // 执行更新操作
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 删除数据:
String sql = "DELETE FROM mytable WHERE id = ?";
try (Connection connection = DriverManager.getConnection(url, username, password);
     PreparedStatement statement = connection.prepareStatement(sql)) {
    statement.setInt(1, id); // 设置参数值
    statement.executeUpdate(); // 执行删除操作
} catch (SQLException e) {
    e.printStackTrace();
}

八、DBUtils 的使用

DBUtils是一个开源的Java库,它简化了JDBC编程,提供了更简洁、易用的API来执行数据库操作。以下是使用DBUtils的一般步骤:

  1. 导入DBUtils相关的包:
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
  1. 创建QueryRunner对象:
QueryRunner queryRunner = new QueryRunner();
  1. 执行查询操作:
String sql = "SELECT * FROM mytable";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
    List<MyTable> myTableList = queryRunner.query(connection, sql, new BeanListHandler<>(MyTable.class));
    // 处理查询结果
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 执行更新操作:
String sql = "UPDATE mytable SET column1 = ? WHERE id = ?";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
    int rowsUpdated = queryRunner.update(connection, sql, newValue, id);
    // 处理更新结果
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 执行插入操作:
String sql = "INSERT INTO mytable (column1, column2) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
    int rowsInserted = queryRunner.update(connection, sql, value1, value2);
    // 处理插入结果
} catch (SQLException e) {
    e.printStackTrace();
}
  1. 执行删除操作:
String sql = "DELETE FROM mytable WHERE id = ?";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
    int rowsDeleted = queryRunner.update(connection, sql, id);
    // 处理删除结果
} catch (SQLException e) {
    e.printStackTrace();
}

💕💕 本文由激流原创,原创不易,希望大家关注、点赞、收藏,给博主一点鼓励,感谢!!!

在这里插入图片描述

举报

相关推荐

0 条评论