JDBC笔记

文章目录

  • JDBC相关
    • JDBC-API详解
      • 一、DriverManager
        • 1.DriverManager(驱动管理类)作用
      • 二、Connection
        • 1.Connection(数据库连接对象)作用
        • 2.具体操作
          • **获取执行SQL对象**
          • **事务管理**
      • 三、Statement
        • 1.Statement作用
          • 执行SQL语句
      • 四、ResultSet
        • 1.ResultSet(结果集对象)作用
        • 2.获取查询结果
        • 3.使用步骤
      • 五、PreparedStatement
        • 1.获取PreparedStatement对象
        • 2.设置参数值
        • 3.执行SQL
      • 六、数据库连接池
        • 1.数据库连接池简介
        • 2.数据库连接池实现
        • 2.数据库连接池实现

JDBC相关

JDBC-API详解

一、DriverManager

1.DriverManager(驱动管理类)作用

(1).注册驱动

(2).获取数据库连接

二、Connection

1.Connection(数据库连接对象)作用

(1).获取执行SQL的对象

(2).管理事务

什么是事务?数据库中的事务是指对数据库执行一批操作,在同一个事务当中,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。

2.具体操作
获取执行SQL对象

(1).普通执行SQL对象

Statement createStatement()

(2).预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement prepareStatement(sql)

(3).执行存储过程的对象(不常用)

CallableStatement prepareCall(sql)
事务管理

(1).MySQL事务管理

开启事务:BEGIN;/START TRANSACTION;

提交事务:COMMIT;

回滚事务:ROLLBACK;

注:MySQL默认自动提交事务

(2).JDBC事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(bollean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务

提交事务:commit()

回滚事务:rollback()

三、Statement

1.Statement作用
执行SQL语句
int executeUpdate(sql)

执行DML、DDL语句,返回值:(1).DML语句影响的行数;(2).DDL语句执行后,执行成功也可能返回0

ResultSet executeQuery(sql)

执行DQL语句,返回值:ResultSet结果集对象

四、ResultSet

1.ResultSet(结果集对象)作用

封装了DQL查询语句的结果

ResultSet stmt.executeQuery(sql);

以上语句执行DQL语句,返回一个ResultSet对象

2.获取查询结果
boolean next();

(1).将光标从当前位置向前移动一位;(2).判断当前行是否为有效行

返回值:(1).true:有效行,当前行有数据;(2).false:无效行,当前行无数据

xxx getXxx(参数);

上述语句用于获取数据,其中xxx表示数据类型,如:int getInt(参数);String getString(参数)

参数:(1).对于int,参数是列的编号(从1开始);(2).对于String,参数是列的名称

3.使用步骤

(1).游标向下移动一行,并判断该行是否有数据:next()

(2).获取数据:getXxx(参数)

// 循环判断游标是否是最后一行末尾
while (rs.next()) {
	// 获取数据
	rs.getXxx(参数);
}

五、PreparedStatement

作用:预编译SQL语句并执行,预防SQL注入问题

什么是SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

1.获取PreparedStatement对象
// SQL语句中的参数值使用? 占位符替代
String sql = "select * from user where username = ? and password = ?";
// 通过Connection对象获取并传入对应的SQL语句
PreparedStatement pstmt = conn.prepareStatement(sql);
2.设置参数值
PreparedStatement对象:setXxx(参数1,参数2):给?赋值
(1)Xxx:数据类型;如setInt(参数1,参数2)
(2)参数:
	参数1:?的位置编号,从1开始
	参数2:?的值
3.执行SQL
executeUpdate();/executeQuery();

由于创建PreparedStatement对象时已经传入了SQL语句,所以此处不用再传入SQL语句

六、数据库连接池

1.数据库连接池简介

​ (1).数据库连接池是个容器,负责分配、管理数据库连接(Connection);

​ (2).它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;

​ (3).释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

好处:资源重用;提升系统响应速度;避免数据库连接遗漏

下图中蓝色部分为数据库连接池
在这里插入图片描述

2.数据库连接池实现
  • 标准接口:DataSource

    • 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口

    • 功能:获取连接

      Connection getConnection()
      

中…(img-NtgZIOhw-1712401172599)]

上图中蓝色部分为数据库连接池

2.数据库连接池实现
  • 标准接口:DataSource

    • 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口

    • 功能:获取连接

      Connection getConnection()
      

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot菜品分页查询模块开发(多表连接查询)

需要注意的地方 为什么创建VO类怎么进行多表连接查询分页查询的统一返回结果类PageResult分页查询Mapper的返回结果是Page<目标实体类> 需求分析与设计 一&#xff1a;产品原型 系统中的菜品数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&…

C语言—每日选择题—Day68

第一题 1、运行以下C语言代码&#xff0c;输出的结果是&#xff08;&#xff09; #include <stdio.h> int main() {char *str[3] {"stra", "strb", "strc"};char *p str[0];int i 0;while(i < 3){printf("%s ",p);i;} retur…

代码随想录算法训练营Day50|LC123 买卖股票的最佳时机IIILC188 买卖股票的最佳时机IV

一句话总结&#xff1a;虽然是困难题&#xff0c;其实都只需要对122 买卖股票的最佳时机II稍作变形即可。 原题链接&#xff1a;123 买卖股票的最佳时机III 相较于买卖股票的最佳时机和股票II来说&#xff0c;本题加了最多操作两次的限制。那么这里实际上就可以直接用滚动数组…

JVM垃圾收集——垃圾收集器

文章目录 1、垃圾收集器的发展和分类1.1、评估垃圾收集器的性能指标1.1.1、吞吐量1.1.2、停顿时间1.1.3、吞吐量和停顿时间的比较 1.2、垃圾收集器的发展史1.3、垃圾收集器的分类1.4、查看默认的垃圾收集器 2、Serial收集器&#xff1a;串行回收3、ParNew收集器&#xff1a;并行…

基于Springboot中小企业设备管理系统设计与实现(论文+源码)_kaic

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

运筹说 第110期|生灭过程和Poisson过程

上一期我们一起学习了排队论的基本概念&#xff0c;本期小编将带大家学习生灭过程和Poisson过程。 下面&#xff0c;让我们一起来学习生灭过程和Poisson过程吧&#xff01; 一、生灭过程简介 01引言 在排队论中&#xff0c;如果N(t)表示时刻t系统中的顾客数&#xff0c;则{N…

【电控笔记5】电流环pi参数整定

旋转坐标系下的电压方程&#xff0c;由id和iq计算出ud和uq 把常数项&#xff08;上面两个红框&#xff09;拿出来解耦合&#xff0c;作为前馈&#xff0c;如下 电流环传递函数 电流带宽 响应时间 另一种方法&#xff1a;内膜控制器

pygame旋转角度发射射线

self.x self.x math.cos(math.radians(self.xuanzhuanjiao)) * 70 self.y self.y - math.sin(math.radians(self.xuanzhuanjiao)) * 70 旋转角度&#xff0c;70是间隔 间隔太小会卡 import pygame from pygame.locals import * import sys import mathpygame.init()width, …

鸿蒙HarmonyOS开发实例:【分布式关系型数据库】

介绍 本示例使用[ohos.data.relationalStore]接口和[ohos.distributedDeviceManager] 接口展示了在eTS中分布式关系型数据库的使用&#xff0c;在增、删、改、查的基本操作外&#xff0c;还包括分布式数据库的数据同步同能。 效果预览 使用说明: 启动应用后点击“ ”按钮可…

使用Ollama在本地运行AI大模型gemma

1.下载&#xff1a; https://github.com/ollama/ollama/releases 2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建 变量名&#xff1a;OLLAMA_MODELS &#xff08;固定变量名&#xff09; 变量值&#xff1a;E:\Ollama\Lib &#xff0…

HNHN 笔记

1 Title HNHN: Hypergraph Networks with Hyperedge Neurons(Yihe Dong、Will Sawin、Yoshua Bengio、Mila)[ICML 2020] 2 Conclusion This study proposes a novel framework, HNHN, for hypergraph representation learning. HNHN is a hypergraph convolution network wit…

开启未来之门:Victoria VR 与 OpenAI 整合,引领 Web3 AI+AR 风潮

加密市场一直是科技创新的前沿阵地。虚拟现实&#xff08;VR&#xff09;技术和人工智能&#xff08;AI&#xff09;被认为是引领未来的重要技术之一&#xff0c;Web3 自然不会缺席这场足以改变人们生活方式的变革&#xff01; 2月份&#xff0c;Apple Vision Pro 的发售迅速引…

【linux】基础IO(四)

在上一篇基础IO中我们主要讲述了文件再磁盘中的存储&#xff0c;当然我们说的也都只是预备知识&#xff0c;为这一篇的文件系统进行铺垫。 目录 搭文件系统的架子&#xff1a;填补细节&#xff1a;inode&#xff1a;datablock[]: 更上层的理解&#xff1a; 搭文件系统的架子&a…

【日期】获取当天以及未来三天的日期和周几

// 获取当天以及未来三天的日期和周几getDates() {const today new Date();const dayOfWeek ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];const todayDate today.toDa…

Redis(持久化 -- RDB AOF)

持久化 通常我们认为持久化为: 重启进程/重启主机之后, 数据仍然存在不丢失 把数据存储在硬盘上 – 持久 把数据存储在内存中 – 不持久 Redis 持久化 redis 是一个内存数据库, 也就是说本身是不持久的(但是快[效率高]), 于是 Redis 提供了持久化机制 — RDB 和 AOF 二者都是对…

探索艺术的新领域——3D线上艺术馆如何改变艺术作品的传播方式

在数字化时代的浪潮下&#xff0c;3D线上艺术馆成为艺术家们展示和传播自己作品的新平台。不仅突破了地域和物理空间的限制&#xff0c;还提供了全新的互动体验。 一、无界限的展示空间&#xff1a;艺术家的新展示平台 3D线上艺术馆通过数字化技术&#xff0c;为艺术家提供了一…

Linux函数学习 fork

1、Linux fork 函数 pid_t fork(void); pid_t &#xff1a; 对于子进程&#xff0c;返回0 pid_t &#xff1a; 对于父进程进程&#xff0c;返回子进程进程号 int pipe(int pipefd[2]); pipefd[0] 为读取管道 pipefd[1] 为写入管道 返回值&#xff1a;-1失败 0 成功 2、函…

TMS320F280049 EPWM模块--DB子模块(4)

下图是DB子模块与其他模块的关系图&#xff0c;可以看到DB主要接收AQ的输入&#xff0c;然后输出给PC。 DB内部信号如下图所示&#xff0c;主要由IN_MODE/POLSEL/OUT_MODE来控制。RED/FED/DBCTL可以由影子加载到活动寄存器。 POLSEL可以控制4种pwm输出极性--AHC/ALC/AH/AL&…

LeetCode31. 下一个排列(Java)

题目&#xff1a; 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列…

HEC-HMS水文模型

HEC-HMS是美国陆军工程兵团水文工程中心开发的一款水文模型。HMS能够模拟各种类型的降雨事件对流域水文&#xff0c;河道水动力以及水利设施的影响&#xff0c;在世界范围内得到了广泛的应用。它有着完善的前后处理软件&#xff0c;能有效减轻建模的负担&#xff1b;能够与HEC开…