【Java】小白友好的JDBC基础学习笔记

目录

JDBC简介

JDBC使用基本步骤

DriverManager

Connection

Statement

PreparedStatement

ResultSet


JDBC简介

JDBC(Java Database Connectivity)是 Java 提供的一种用于与关系型数据库进行交互的 API(应用程序接口)。它允许 Java 应用程序通过标准的 SQL 语句来访问和操作数据库。

JDBC 提供了一组接口和类,用于连接数据库、执行 SQL 查询和更新操作、处理结果集等。通过 JDBC,开发人员可以使用 Java 代码来实现与数据库的通信,而不需要关注底层数据库的具体实现细节。

JDBC 的主要组件包括:

  1. DriverManager:用于管理数据库驱动程序的加载和连接。

  2. Connection:表示与数据库的连接,通过它可以创建 Statement 或 PreparedStatement 对象来执行 SQL 语句。

  3. Statement 和 PreparedStatement:用于执行 SQL 查询和更新操作,并可以获取结果集。

  4. ResultSet:表示查询结果的集合,开发人员可以使用 ResultSet 对象来访问和处理查询结果。

JDBC使用基本步骤

  1. 加载数据库驱动程序,可以使用 Class.forName() 方法来加载驱动程序类。

  2. 建立与数据库的连接,通过 DriverManager.getConnection() 方法获取 Connection 对象。

  3. 创建 Statement 或 PreparedStatement 对象,通过它们执行 SQL 语句。

  4. 处理查询结果或更新操作。

  5. 关闭连接和相关资源,释放数据库资源。

DriverManager

DriverManager 是 JDBC API 中的一个类,它负责加载和管理数据库驱动程序,并建立与数据库的连接。它提供了一组静态方法,用于注册驱动程序、获取数据库连接和管理驱动程序的加载。

DriverManager 的主要功能包括:

  1. 注册驱动程序:在使用 DriverManager 建立数据库连接之前,需要先注册相应的数据库驱动程序。可以使用 Class.forName() 方法来动态加载驱动程序类,或者直接调用 DriverManager.registerDriver() 静态方法(DriverManager类加载时会自动调用)来注册指定的驱动程序。

  2. 获取数据库连接:通过调用 DriverManager.getConnection() 方法来获取与数据库的连接。该方法接受一个表示数据库 URL、用户名和密码的参数,并返回一个 Connection 对象,通过该对象可以执行 SQL 语句和处理结果集。

  3. 管理驱动程序:DriverManager 负责加载并管理驱动程序。当调用 getConnection() 方法时,DriverManager 会根据传入的数据库 URL 自动选择合适的驱动程序来建立连接。它会按照注册的驱动程序顺序依次尝试,直到找到可用的驱动程序。

Connection

JDBC 的 Connection 接口代表着 Java 程序与数据库之间的连接。它提供了操作数据库的基本方法,包括创建 Statement、PreparedStatement、CallableStatement 对象,管理事务,设置连接属性等。

Connection 接口中一些常用的方法包括:

  1. createStatement():创建一个用于发送简单 SQL 语句的 Statement 对象。
  2. prepareStatement():创建一个 PreparedStatement 对象,用于发送带有参数的 SQL 语句。
  3. setAutoCommit():设置是否自动提交事务。
  4. commit():提交当前事务。
  5. rollback():回滚当前事务。
  6. close():关闭连接。

Statement

JDBC 的 Statement 接口用于执行静态 SQL 语句并返回结果。它是 Connection 接口的一个方法,用于发送简单的 SQL 语句给数据库执行,如查询、插入、更新和删除操作。

Statement 接口中一些常用的方法包括:

  1. executeQuery():用于执行查询语句,返回一个 ResultSet 对象,该对象包含了查询结果。
  2. executeUpdate():用于执行更新语句,返回一个 int 值,表示受影响的行数。
  3. execute():用于执行任意 SQL 语句,可以是查询语句或更新语句,根据语句类型返回不同的结果。
  4. addBatch():将多个 SQL 语句添加到批处理中,以便一次性执行。
  5. clearBatch():清空当前批处理中的所有 SQL 语句。
  6. executeBatch():执行批处理中的所有 SQL 语句,并返回一个 int 数组,表示每个 SQL 语句执行后受影响的行数。
  7. close():关闭 Statement 对象。

PreparedStatement

JDBC 的 PreparedStatement 接口是用于执行带有参数的 SQL 语句的对象。与 Statement 相比,PreparedStatement 具有以下优势:

  1. 预编译:PreparedStatement 对象在执行之前会对 SQL 语句进行预编译,将 SQL 语句和参数分开处理。这样可以提高执行相同 SQL 语句多次的效率,因为数据库只需编译一次即可。

  2. 参数绑定:PreparedStatement 允许将参数绑定到 SQL 语句中,避免了手动拼接 SQL 字符串的麻烦,并且可以有效地防止 SQL 注入攻击。

  3. 可读性和可维护性:使用 PreparedStatement 可以将参数直接嵌入 SQL 语句中,使得 SQL 语句更易读、易维护。

PreparedStatement 接口的常用方法:

  1. setXXX():用于设置 SQL 语句中的参数值,其中 XXX 可以是不同的数据类型,如 setString()、setInt()、setDouble() 等。

  2. executeUpdate():用于执行 INSERT、UPDATE 和 DELETE 等 DML(数据操作语言)语句,并返回受影响的行数。

  3. executeQuery():用于执行 SELECT 查询语句,并返回 ResultSet 对象,用于获取查询结果。

  4. addBatch() 和 executeBatch():用于批量执行多个 SQL 语句。

ResultSet

JDBC 的 ResultSet 接口用于表示 SQL 查询的结果集,它提供了一种类似于游标的方式来遍历查询结果,并可以获取每一行数据的各个字段的值。ResultSet 对象通过执行查询操作获得,它通常由 Statement 或者 PreparedStatement 的 executeQuery() 方法返回。

ResultSet 接口中一些常用的方法包括:

  1. next():将游标移动到下一行,并返回一个布尔值,表示是否存在下一行数据。
  2. getXXX():用于获取当前行指定列的值,其中 XXX 可以是不同的数据类型,如 getString()、getInt()、getDouble() 等。
  3. previous() 和 absolute():移动游标到上一行或指定行。
  4. isFirst()、isLast()、isBeforeFirst()、isAfterLast():判断游标当前位置相对于结果集的位置。
  5. close():关闭 ResultSet 对象,释放数据库资源。

示例:

复制代码
import java.sql.*;

public class JDBCSample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String user = "username";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(url, user, password)) {
            try (Statement statement = connection.createStatement();
                 ResultSet resultSet = statement.executeQuery("SELECT * FROM employees")) {
                while (resultSet.next()) {
                    String name = resultSet.getString("name");
                    int age = resultSet.getInt("age");
                    double salary = resultSet.getDouble("salary");
                    System.out.println("Name: " + name + ", Age: " + age + ", Salary: " + salary);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
小毛驴85015 分钟前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟2 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°2 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜3 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
巴伦是只猫3 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
DuelCode3 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
好好研究3 小时前
学习栈和队列的插入和删除操作
数据结构·学习
幽络源小助理3 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring