JDBC 初认识、速了解
目录
一. JDBC的简介
1. 数据的持久化
2. 什么是JDBC
二. JDBC中常用的类和接口
1. Driver 接口
2. DriverManager 类
3. Connection 接口
4. Statement 接口
5. PreparedStatement接口
6. ResultSet 接口
三. 总结
前言
从现在开始就来讲解JDBC的相关知识了本文的目的是来大体的了解JDBC以及会用到的类和方法
旨在让读者更好的了解JDBC
个人主页:艺杯羹
一. JDBC的简介
1. 数据的持久化
先讲一个概念,数据的持久化(persistence)
简单来说就是将内存中的数据保存到可永久保存的设备中,例如磁盘
主要应用在将内存中的数据存储在关系型数据库中,也可以存储在磁盘文件、XML数据文件中
关系图如下:
2. 什么是JDBC
JDBC
- JDBC(Java DataBase Connectivity)java 数据库连接
- 是 JavaEE 平台下的技术规范
- 定义了在 Java 语言中连接数据库,执行 SQL 语句的标准 API
- 可以为多种关系数据库提供统一访问
数据库驱动程序
- 数据库驱动就是直接操作数据库的一个程序
- 不同数据库产品的数据库驱动名字有差异
- 在程序中需要依赖数据库驱动来完成对数据库的操作
Java中访问数据库技术
- 基于JDBC标准访问数据库
- 使用第三方ORM 框架,如Hibernate, Mybatis 等访问数据库
当有了JDBC那么java程序就可以通过JDBC,操作各种数据库(MySQL,Oracle,SQLserver等)
二. JDBC中常用的类和接口
先介绍JDBC常用的类和接口,从大体上了解一下
1. Driver 接口
英文意思
driver:驱动程序
从意思就可以看出,这个接口是关于数据库驱动的
Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力。
比如与数据库建立连接的方法的定义,该接口是提供给数据库厂商使用的
所有支持 java 语言连接的数据库都实现了该接口,实现该接口的类我们称之为数据库驱动类
2. DriverManager 类
英文意思
Manager:管理
从意思可以看出,这个是关于数据库驱动管理的接口
DriverManager是驱动程序管理器,是负责管理数据库驱动程序的
驱动注册以后,会保存在DriverManager中的已注册列表中
DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连接。并返回 Connection 接口类型的数据库连接对象。
- getConnection(String jdbcUrl, String user, String password)
该方法通过访问数据库的 url、用户名以及密码,返回对应的数据库的 Connection 对象 - JDBC URL
与数据库连接时,用来连接到指定数据库标识符
在 URL 中包括了该数据库的类型、 地址、端口、库名称等信息
注意:不同品牌数据库的连接 URL 不同
先了解一下这个URL的写法,之后会详细讲解的
Connection conn =
DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");
3. Connection 接口
英文意思
connection:连接
从意思可以看出,这个是连接数据库的接口
Connection 是数据库的连接(会话)对象
对数据库的一切操作都是在这个连接基础之上进行的,我们可以通过该对象执行 sql 语句并返回结果
常用方法
- createStatement()
创建向数据库发送 sql 语句的 Statement 接口类型的对象。 - preparedStatement(sql)
创建向数据库发送预编译 sql 的PrepareSatement 接口类型的对象。 - setAutoCommit(boolean autoCommit)
设置事务是否自动提交 - commit()
在链接上提交事务 - rollback()
在此链接上回滚事务(回滚就是撤销)
4. Statement 接口
一句话:用于执行SQL语句
用于执行静态 SQL 语句并返回它所生成结果的对象。 由 createStatement 创建,用于发送简单的 SQL 语句(不支持动态绑定)。字符串里要保存好
常用方法
- execute( String sql )
有结果集返回true 没有返回false
执行参数中的 SQL,返回是否有结果集 - executeQuery( String sql )
运行 select 语句,返回 ResultSet 结果集 - executeUpdate(String sql)
运行 insert/update/delete(DML操作) 操作,返回更新的行数 - addBatch(String sql)
把多条 sql 语句放到一个批处理中
批量添加 - executeBatch()
向数据库发送一批 sql 语句执行
5. PreparedStatement接口
一句话:用来执行SQL语句,和Statement接口类似,但是这个接口能够避免很多问题,所以后期基本上都是用的这个接口
继承自 Statement 接口。PreparedStatement 对象比 Statement 对象的效率更高,由于实现了动态的参数绑定,所以可以防止 SQL 注入(支持动态),所以我们一般都使PreparedStatement
对Statement接口做了一个扩展
常用方法
- addBatch()
把当前 sql 语句加入到一个批处理中 - execute()
执行当前 SQL,返回个 boolean 值 - executeUpdate()
运行 insert/update/delete 操作,返回更新的行数。 - executeQuery()
执行当前的查询,返回一个结果集对象 - setDate(int parameterIndex, Date x)
向当前SQL语句中的指定位置绑定一个java.sql.Date值 - setDouble(int parameterIndex, double x)
向当前 SQL 语句中的指定位置绑定一个 double值 - setFloat(int parameterIndex, float x)
向当前 SQL 语句中的指定位置绑定一个 float 值 - setInt(int parameterIndex, int x)
向当前 SQL 语句中的指定位置绑定一个 int 值 - setString(int parameterIndex, String x)
向当前 SQL 语句中的指定位置绑定一个 String 值
6. ResultSet 接口
ResultSet 用来暂时存放数据库查询操作获得结果集。
注意:这个是表的指针,不是整个结果集的表
常用方法
- getString(int index) 和 getString(String columnName)
获得在数据库里是 varchar、char 等类型的数据对象。 - getFloat(int index)和 getFloat(String columnName)
获得在数据库里是 Float 类型的数据对象。 - getDate(int index) 和 getDate(String columnName)
获得在数据库里是 Date 类型的数据。 - getBoolean(int index) 和 getBoolean(String columnName)
获得在数据库里是 Boolean 类型的数据。 - getObject(int index) 和 getObject(String columnName)
获取在数据库里任意类型的数据。
三. 总结
这就是JDBC的初认识以及之后会用到的相关的类和方法,希望能够帮助到你😊
相关文章:
JDBC 初认识、速了解
目录 一. JDBC的简介 1. 数据的持久化 2. 什么是JDBC 二. JDBC中常用的类和接口 1. Driver 接口 2. DriverManager 类 3. Connection 接口 4. Statement 接口 5. PreparedStatement接口 6. ResultSet 接口 三. 总结 前言 从现在开始就来讲解JDBC的相关知识了 本文的…...
双指针算法
引入 双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息。 ——OI Wiki 接下来我们来看双指针的几个具体使用方法。 板子…...
关于TD算法的笔记【时间差分】
1. TD算法逻辑:TD算法即时间差分算法,结合了蒙特卡洛方法和动态规划思想,通过当前估计值和下一个时间步观测值更新状态价值估计,无需完整episode或环境完整信息。 2. 下一时刻估计值计算:下一时刻估计值为 r_{t 1}\g…...
计算斐波那契数列
1.对于斐波那契数列的理解: (1)常规 该数列由兔子繁衍的想法产生,故又“兔子数列” 其数值为:1、1、2、3、5、8、13、21、34 从数学定义上走:F(0)1,F(1)1, F(n)F(n - 1)F(n - 2)(n ≥ 2,n ∈…...
Oracle REGEXP_SUBSTR
在 Oracle 数据库中,REGEXP_SUBSTR 是一个基于正则表达式的字符串处理函数,用于从目标字符串中提取符合特定模式的子串。它比传统的 SUBSTR 函数更灵活,适用于复杂的模式匹配需求。以下是其核心原理、参数解析及实际案例详解: 一…...
无人机自主导航与路径规划技术要点!
一、自主导航与路径规划技术要点 1. 传感器融合 GPS/北斗定位:提供全局定位,但在室内或遮挡环境下易失效。 惯性测量单元(IMU)**:通过加速度计和陀螺仪实时追踪姿态,弥补GPS信号丢失时的定位空缺。 …...
DDS波形发生器仿真及技术原理
1. 引言 在现代数字信号处理、电路设计以及通信系统中,直接数字频率合成(DDS)技术因其高速、精细的频率分辨率以及连续相位输出等优点而得到广泛应用。本文主要探讨在DE2-115开发板平台上基于DDS技术实现波形发生器的设计与实践。通过该设计…...
Java使用ANTLR4解析IDL文件
文章目录 前言解析IDL文件准备两个IDL文件准备一个IDL Grammar文件maven配置生成Lexer Parser Listener Visitor代码新建实体类IDL解析遍历器单元测试 参考 前言 接着上篇:Java使用ANTLR4对Lua脚本语法校验,介绍了什么是ANTLR?/ 举了一个hel…...
04-Seata 深度解析:从分布式事务原理到 Seata 实战落地
Seata 深度解析:从分布式事务原理到 Seata 实战落地 一、分布式事务核心理论与挑战 1.1 分布式事务的本质难题 在微服务架构中,一次业务操作可能涉及多个服务的数据库操作,传统单体事务(ACID)无法跨越服务边界&…...
2025企业增长新引擎:AI Agent驱动人效跃迁|白皮书2.0发布
2025年伊始,一款名为DeepSeek-R1的国产AI大模型以其高性能、低成本等核心优势成功霸榜热搜,在全国乃至全球掀起一场以AI为核心的技术革新与管理变革。 面对这样极具颠覆性的革新命题,易路人力资源科技王天扬先生自2022年起就率团队持续专注于…...
IJCV-2025 | 深圳大学记忆增强的具身导航!ESceme:基于情景记忆的视觉语言导航
作者:Qi Zheng 1 , 2 ^{1,2} 1,2, Daqing Liu 3 ^{3} 3, Chaoyue Wang 3 ^{3} 3, Jing Zhang 2 ^{2} 2, Dadong Wang 4 ^{4} 4, Dacheng Tao 2 ^{2} 2单位: 1 ^{1} 1深圳大学电子与信息工程学院, 2 ^{2} 2悉尼大学计算机科学学院,…...
[第十六届蓝桥杯 JavaB 组] 真题 + 经验分享
A:逃离高塔(AC) 这题就是简单的签到题,按照题意枚举即可。需要注意的是不要忘记用long,用int的话会爆。 📖 代码示例: import java.io.*; import java.util.*; public class Main {public static PrintWriter pr ne…...
《分布式软总线:网络抖动下的数据传输“定海神针”》
在当下,智能设备之间的互联互通已成为生活与工作的刚需。分布式软总线作为实现这一愿景的关键技术,正日益凸显其重要性。然而,网络环境的复杂性,尤其是网络抖动频繁的情况,给分布式软总线的数据传输带来了严峻挑战。如…...
C++函数
函数 为什么要使用函数 已经有main函数,为什么还要自定义函数?:“避免重复制造轮子”,提高开发效率 函数的定义 函数的设计方法:先确定函数的功能、确定函数的参数、是否需要参数,参数的个数,…...
FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现
目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道,任…...
PCIe 学习笔记(一)
系列文章目录 【PCIe】链路测试,数字工程师也要会看高速信号眼图! 【PCIe】链路训练状态机(LTSSM) - PCIe链路建立过程概述 【PCIe】PCIe设备的BDF与系统枚举过程 文章目录 系列文章目录PCIe LTSSM**1. 链路训练状态(Training States&#…...
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——LED、按键测试
1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试4.1 LED…...
深度为16,位宽8bit的单端口SRAM——学习记录
链接: 【Verilog HDL 训练】第 13 天(存储器、SRAM)-云社区-华为云 module sram #(parameter ADDR_BITS4)(input clk,input [ 7:0] addr,input [ 7:0] din,input ce,input we,output reg [ 7:0] dout);localparam MEM_DEPTH 1<<ADDR_…...
面向对象编程
在面向对象编程中,除了通过创建类的实例来访问其属性和方法外,还可以通过在一个类里创建另一个类的属性(本质上也是持有另一个类的实例引用)的方式来访问该类的属性和方法。下面为你详细解释这两种方式: 1. 通过创建实…...
远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?
远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态? 查看Linux发行版信息 查看发行版名称和版本: cat /etc/*-release或 lsb_release -a查看内核版本&#…...
简单socket通信,回显 服务器程序与客户端程序之间的通信。
Socket 通信编程是一种基于网络的通信方式,允许不同主机上的程序通过网络进行数据交换。 实现结构try catch: 前情了解: 1.如何创建服务器端 定义ServerSocket套接字,需要等待客户端连接,阻塞,直到接入连接…...
C# 基类型和派生类型之间的转型
1.什么是基类型和派生类 基类型:父类,所有子类都继承自它。 派生类型:子类,继承了父类的属性和方法,还可以添加自己的新功能。 例子: class Animal { }//基类型 class Dog : Animal { }//派生类型 这…...
深度学习--激活函数
激活函数通过计算加权和并加上偏置来确定神经元是否应该倍激活,它们将输入信号转换为输出的可微运算。大多数激活函数都是非线性的,由于激活函数是深度学习的基础,下面简要介绍一些常见的激活函数。 1 RelU函数 最受欢迎的激活函数是修正线性…...
MySQL 缓存机制全解析:从磁盘 I/O 到性能优化
MySQL 缓存机制全解析:从磁盘 I/O 到性能优化 MySQL 的缓存机制是提升数据库性能的关键部分,它通过多级缓存减少磁盘 I/O 和计算开销,从而提高查询和写入的效率。 1. 为什么需要缓存? 数据库的性能瓶颈通常集中在磁盘 I/O 上。…...
【项目管理】第17章 项目干系人管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...
编程语言到mysql ‘\‘到数量关系
在 MySQL 的模糊查询中,反斜杠 \ 的转义规则需要根据 转义层级 和 SQL 模式 来确定。以下是详细说明及示例: 一、默认模式下(未启用 NO_BACKSLASH_ESCAPES) 1. 规则说明 反斜杠转义:\ 是 MySQL 的默认转义字符。 转义…...
本地生活服务平台搭建方案详解:同城跑腿外卖系统源码一体化开发
在数字化浪潮不断推进的今天,本地生活服务平台正逐渐成为人们日常生活中不可或缺的一部分。从点餐外卖到同城帮买、帮送、帮取,用户对即时服务的需求愈发强烈。与此同时,创业者和本地商家也纷纷看好“同城服务 外卖配送”的一体化平台模式&a…...
索引语法SQL性能分析索引的使用
目录 准备: 一.索引语法 1). 创建索引 2). 查看索引 3). 删除索引 4).使用索引查询和普通查询的区别 二.SQL性能分析 1.SQL执行频率 2.慢查询日志 3.profile详情 4.explain 三.索引的使用 1.最左前缀法则 2.范围查询 3.索引失效情况 索引列运算 字符串不加引号…...
Docker技术基础新手入门教程
Docker技术深度解析:从架构到实战的运维指南 一、Docker核心架构与组件详解1. 什么是Docker?1. Docker引擎(Docker Engine)2. Docker对象模型二、关键技术深度剖析1. 容器隔离机制2. 容器网络模型网络驱动类型自定义网络实战3. 存储卷与数据持久化三种挂载方式对比示例:My…...
NO.93十六届蓝桥杯备战|图论基础-拓扑排序|有向无环图|AOV网|摄像头|最大食物链计数|杂物(C++)
有向⽆环图 若⼀个有向图中不存在回路,则称为有向⽆环图(directed acycline graph),简称 DAG 图 AOV⽹ 举⼀个现实中的例⼦:课程的学习是有优先次序的,如果规划不当会严重影响学习效果。课程间的先后次序可以⽤有向图表⽰ 在…...
Rust泛型与特性
文章目录 泛型函数中的泛型结构体与枚举中的泛型特性(trait)默认特性Trait作为参数特性做返回值 给结构体实现方法 泛型 泛型编程是现代编程语言中重要的机制 C是通过模板来实现泛型的,而C语言中是没有泛型的 泛型是用来表达抽象类型的机制…...
Day08【基于预训练模型分词器实现交互型文本匹配】
基于预训练模型分词器实现交互型文本匹配 目标数据准备参数配置数据处理模型构建主程序测试与评估总结 目标 本文基于预训练模型bert分词器BertTokenizer,将输入的文本以文本对的形式,送入到分词器中得到文本对的词嵌入向量,之后经过若干网络…...
基于uniapp 实现画板签字
直接上效果图 代码 <template><view class"container"><!-- 签名画布 --><view class"canvas-container"><canvas canvas-id"signCanvas" class"sign-canvas"touchstart"handleTouchStart"touc…...
5.跳表(skiplist)
1. 什么是跳表 -skiplist skiplist 本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key 或者 key/value 的查找模型。 skiplist ,顾名思义,首先它是一个 list 。实际上…...
GitHub 封禁中国 IP:影响、原因及应对
在技术全球化的当下,代码托管平台如同开发者的 “数字仓库”,而 GitHub 无疑是其中最广为人知的一座。但在 2025 年 4 月 13 日,一则令人震惊的消息在国内开发者社群中炸开了锅 ——GitHub 疑似封禁中国 IP。一时间,这一事件迅速成…...
基于工业操作系统构建企业数字化生态的实践指南
一、工业操作系统选型策略 工业操作系统(IIoT OS)的选型需从功能适配性、技术成熟度、生态兼容性三个维度综合评估。以玉麟科技DIOS平台为例,其 "云端 终端" 架构支持全球设备管理,通过工业知识模型实现设备健康度预测…...
金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应”
金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应” 在2025年第一季度京东工业平台“电料辅件-安全工器具”热销品牌的激烈竞争中,金能电力以一组极具说服力的数据,向行业展示了何为“绝对头部”。从成交金额、销量到流量、客群覆…...
基于大模型的反流食管炎手术全流程风险预测与治疗方案研究报告
目录 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究方法与创新点 二、反流食管炎概述 2.1 定义与发病机制 2.2 临床症状与诊断标准 2.3 流行病学现状 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于反流食管炎预测的优势 四…...
探索 C 与 Java/Kotlin 的语言差异:从指针到高阶函数
作为一名熟悉 Java 和 Kotlin 的开发者,初次接触 C/C 时常会遇到一系列概念上的“文化冲击”。本文将从几个关键点出发,帮助你更好地理解 C/C 与 Java/Kotlin 在语言设计上的核心区别。 1. 指向未知类型的指针 void*、结构体指针访问 ->、空指针常量 …...
Redis之缓存过期淘汰策略
面试切入点 Redis内存满了怎么办? redis的默认内存多少?在哪里查看?如何设置修改? 查看redis最大占用内存 打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。 redi…...
Rust-引用借用规则
目录 一、概述 二、借用规则 三、详细解释 3.1 第一条规则 3.2 第二条规则 3.3 第三条规则 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [Rust-引用借用规则] ❤博主广交技术好友,喜欢文章的可以关注一下❤ 一、概述 Rust为确保程序在运行时不…...
【报错】解决pytorch出现RuntimeError: An attempt has been made to start a new process...
此错误是由于在 Windows 系统中使用多进程时,没有正确使用 if __name__ __main__: 语句块造成的。在 Windows 里,多进程的启动方式是 spawn,并非 fork,所以必须在主模块中使用 if __name__ __main__: 语句块来避免子进程重复执行…...
游戏引擎学习第228天
对上次的内容进行回顾,并为今天的开发环节做铺垫。 目前大部分功能我们已经完成了,唯一剩下的是一个我们知道存在但目前不会实际触发的 bug。这个 bug 的本质是在某些线程仍然访问一个已经被销毁的游戏模式(mode)之后的状态&…...
Pytorch Hook 技巧
通过 functools.partial 扩展 Pytorch Hook 机制 阅读 atom 文章源码时学习到的技巧,mark一下 通过 functools.partial,开发者无需修改原始函数或 PyTorch 的 Hook 机制,即可实现参数扩展与接口适配,这是 Python 函数式编…...
Python multiprocessing模块介绍
multiprocessing 是 Python 标准库中的一个模块,用于实现多进程并行计算,可以在多核 CPU 上显著提升程序性能,尤其适用于 CPU 密集型任务。Python 的多线程由于 GIL(全局解释器锁)限制,在进行 CPU 密集型任…...
[特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南
🚀 实践步骤概览 今天我们要在MAC上完成一个完整的AI项目闭环: 微调一个大模型 → 2. 导出模型并部署 → 3. 暴露API给web后端 → 4. 前端展示 🛠️ 微调模型准备 核心配置 框架:LLama-Factory 🏭 算法:…...
第二天 通过脚本控制物体移动和旋转
一、Unity脚本编程基础认知 1.1 为什么说脚本是Unity的灵魂? Unity引擎的核心架构采用ECS(Entity-Component-System)模式,脚本作为组件的具体实现,控制着游戏对象的所有行为。统计显示,一个中等规模的Uni…...
在SpringBoot中访问 static 与 templates 目录下的内容
目录 步骤一:添加 Thymeleaf 依赖 (处理 Templates 目录)步骤二:配置静态资源路径 (可选但建议了解)步骤三:访问不同目录下的 HTML 文件访问 static 目录下的 HTML 文件访问 templates 目录下的 HTML 文件 总结 在使用 Spring Boot 开发 Web …...
常见的 API 设计风格
在软件开发中,常见的 API 设计风格主要有以下几种,每种风格适用于不同的场景和需求: 1. RESTful API (主流) 特点: 基于 HTTP 协议,使用标准方法(GET/POST/PUT/DELETE)资源导向(UR…...
Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行
Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行 Grass如何在DePIN项目丛林中脱颖而出? 答案在于其"零门槛"策略——用户是基石,其他一切皆为杠杆。 Grass通过"技术+模式"双轮驱动打破行业内卷:零知识证明技术与Solana Layer2架构确保数据真实…...