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

news/2024/5/18 22:22:42 标签: java, 学习, 笔记, JDBC, 数据库, api, sql

目录

JDBC%E7%AE%80%E4%BB%8B-toc" style="margin-left:0px;">JDBC简介

JDBC%E4%BD%BF%E7%94%A8%E5%9F%BA%E6%9C%AC%E6%AD%A5%E9%AA%A4-toc" style="margin-left:0px;">JDBC使用基本步骤

DriverManager

Connection

Statement

PreparedStatement

ResultSet


JDBC%E7%AE%80%E4%BB%8B">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%E4%BD%BF%E7%94%A8%E5%9F%BA%E6%9C%AC%E6%AD%A5%E9%AA%A4" style="background-color:transparent;">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();
        }
    }
}

http://www.niftyadmin.cn/n/5358442.html

相关文章

JavaSE-项目小结-IP归属地查询(本地IP地址库)

一、项目介绍 1. 背景 IP地址是网络通信中的重要标识,通过分析IP地址的归属地信息,可以帮助我们了解访问来源、用户行为和网络安全等关键信息。例如应用于网站访问日志分析:通过分析访问日志中的IP地址,了解网站访问者的地理位置分…

linux麒麟系统安装mongodb7.0

1.mogedb下载 下载的是他tar包 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-7.0.5.tgz wget -o https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-7.0.5.tgz 也可以下载rpm包 2.将包上传至服务器并解压 #进入目录 并解压 cd /opt/ tar…

Swagger学习使用

swagger升级导致访问ui页面地址不一样 方式一 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version></parent> <dependenc…

git使用方法(简易版)

一、git使用过程 1.注册git账号&#xff0c;并新建一个仓库&#xff1b; http://t.csdnimg.cn/ePcsx可以参考链接 2.在电脑文件夹中&#xff0c;右键选择 Git Bash Here,输入git init&#xff08;初始化仓库&#xff09;&#xff1b; git init - 初始化仓库。 Git 使用 git …

Mybatis批量增删改查

1.批量新增 mapper层&#xff1a; Integer batchAdd(Param("list")List<UserEntity> userEntity); xml&#xff1a; <insert id"batchAdd" parameterType"java.util.List">INSERT INTO 表名(name, age, gender, psw, seq) value…

linux☞ Centos 基础篇

切换用户 重启系统、退出 su 用户 ### su switch user 重启系统 reboot 退出当前账户 logout 或者 exit 或者 CtrlD 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet&#xff1a;指明网卡类型为以太网 DEVICEens33&#xff1a;指定当前配置的…

springBoot+Vue汽车销售源码

源码描述: 汽车销售管理系统源码基于spring boot以及Vue开发。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、 财务报表等功能&#xff0c;提供经理和销售两种角色进行管理。 技术架构&#xff1a; idea(推荐)、jdk1.8、mysql5.X(不能为8驱动不匹配)、ma…

立体边界,让arcgis出图更酷炫一些

就是这样子的那个图—— 本期我们还是用长沙市为例&#xff0c; 来手把手的演示制作立体边界&#xff0c; 就是这个样子的边界—— 第一步—准备底图 其实你准备什么底图都可以哈&#xff0c;例如调用天地图、下载个影像图&#xff0c;或者用其他什么的底图&#xff0c;都是…