【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();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

感染了后缀为.pings勒索病毒如何应对?数据能够恢复吗?

导言: 近期,一种名为.pings的勒索病毒悄然出现,给用户的数据安全带来了极大的威胁。该病毒以强力的加密手段对用户文件进行锁定,并勒索赎金。在本文中,91数据恢复将深入介绍.pings勒索病毒的特点,提供被感…

代码随想录二刷——字符串day9

文章目录 前言字符串知识点 一、 28. 找出字符串中第一个匹配项的下标二、459. 重复的子字符串总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥的刷…

虚拟机扩容后黑屏卡死解决方法

亲测有效,首先一般是在扩容后黑屏的,现象为开机后看到个横线光标不闪,黑屏,进入不了桌面。原因是硬盘已经满了,所以解决方法就是清理硬盘。所以首先还是要解决登录问题。 开机时按 esc 键进入 GNU GRUB,选择…

详解SpringCloud微服务技术栈:深入ElasticSearch(4)——ES集群

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:深入ElasticSearch(3)——数据同步(酒店管理项目&a…

新火种AI|GPT Store可能是一个“硅基人才市场”

作者:一号 编辑:美美 也许我们都错了,GPT Store可能是一个“硅基人才市场”,而不是APP Store。 如果要说在AI领域中最火的一个应用,那么在当下,毫无疑问会是ChatGPT。 2023年,全球前50的AI工…

IT行业中最重要的证书

在IT行业,拥有一些含金量较高的证书是职业发展的关键。这些证书不仅可以证明技能水平,还有助于提升在职场上的竞争力。本文将介绍几个IT行业中最重要的证书。 1. Cisco认证 CCNA(Cisco Certified Network Associate)是Cisco公司新…

LeetCode: 189.轮转数组

本篇目标了解,翻转数组的经典解法, 189. 轮转数组 - 力扣(LeetCode) 目录 基本方法概述: 1,翻转做法,推荐时O(n),空(1) 2&#x…

J-Link:STM32使用J-LINK烧录程序,其他MCU也通用

说明:本文记录使用J-LINK烧录STM32程序的过程。 1. J-LINK驱动、软件下载 1、首先拥有硬件J-Link烧录器。 2、安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com 直接下载就可以了。 2.如何使用J-LINK向STM32烧写程序 1、安装好以后打开J-LINK Fl…

软件测试基础总结

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 提示:本文旨在帮助小白对软件测试有个基础的入…

黑方备份学习(1):linux安装 黑方容灾备份与恢复系统软件v6.0 代理

1.环境准备 1.1硬件环境 内存>4G,cpu最低双核 1.2把SElinux状态改为Disabled (1)查看SElinux状态 输入getenforce命令 SELinux共有3个状态: enforcing (执行中)、permissive (不执行但…

SOME/IP 协议介绍(七)传输 CAN 和 FlexRay 帧

SOME/IP 不应仅用于传输 CAN 或 FlexRay 帧。但是,消息 ID 空间需要在两种用例之间进行协调。 传输 CAN/FlexRay 应使用完整的 SOME/IP 标头。 AUTOSAR Socket-Adapter 使用消息 ID 和长度来构建所需的内部 PDU,但不会查看其他字段。因此,必…

MacOS 14.3 安装 brew

终端执行:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 可能出现的问题 问题一 连接超时,报错: Failed to connect to raw.githubusercontent.com port 443 after 13 ms:…

029-安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作

029-安全开发-JS应用&DOM树&加密编码库&断点调试&逆向分析&元素属性操作 #知识点: 1、JS技术-DOM树操作及安全隐患 2、JS技术-加密编码及数据安全调试 演示案例: ➢JS原生开发-DOM树-用户交互 ➢JS导入库开发-编码加密-逆向调试 ➢两…

Python之数据可视化(地图)

目录 一 基础地图应用 二 全国疫情图 一 数据准备 二 数据处理 二 湖北省疫情图 一 数据准备 二 数据处理 一 基础地图应用 导入map地图对象 from pyecharts.charts import Map map Map() 写入数据 data [("北京市",100),("上海市"…

Django 中的 connection.cursor() 执行 SQL 用法

在 Django 开发中,通常依赖于 Django ORM 来处理数据库操作,它提供了一个高级的抽象层,使得数据库交互更加直观和安全。然而,有时可能需执行一些复杂的查询或数据库操作,这些操作可能超出了 ORM 的能力范围&#xff08…

Ansible自动化运维实战

一、abstract简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric) 的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.无客户端。我们要学一些Ansible的安装和一些基…

【劳德巴赫 Trace32 高阶系列 4 -- Trace32 JTAG 常用命令】

文章目录 Trace32 JTAG 常用命令JTAG.PINJTAG 信号值读取JTAG.SHIFTREGExampleJTAG.SHIFTTDIExampleJTAG.SHIFTTMSExampleJTAG.PROGRAM.SVFTrace32 JTAG 常用命令 JTAG (Joint Test Action Group) 是一种常用的调试和测试标准,用于在电子系统的芯片和板级测试中。在JTAG标准中…

2024最新版MongoDB安装使用指南

2024最新版MongoDB安装使用指南 Installation and Usage Guide of the Latest MongoDB Community Edition in 2024 By JacksonML MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that you need. – mon…

gitlib部署及应用

一. 下载源网址 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /gitlab-ce/yum/el7/ | 清华大学开源软件…

【DeepLearning-7】 CNN 和Transformer的混合神经网络结构

构造函数__init__ def __init__(self, channel, dim, depth2, kernel_size3, patch_size(2, 2), mlp_dimint(64*2), dropout0.):初始化函数定义了网络的主要结构和参数。channel: 输入特征的通道数。dim: Transformer部分的特征维度。depth: Transformer的层数。kernel_size: 卷…