JDBC执行sql过程
1. 加载数据库驱动
JDBC 通过 驱动(Driver) 实现与不同数据库的通信。驱动需提前加载到 JVM:
手动加载(JDBC 4.0 前):
Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱动类
自动加载(JDBC 4.0+):通过 SPI 机制自动识别驱动类,无需显式调用。
2. 建立数据库连接
通过 DriverManager
或 连接池(如 HikariCP) 获取 Connection
对象:
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
3. 创建 Statement 对象
JDBC 提供三种执行 SQL 的接口:
接口 | 特点 |
---|---|
Statement | 静态 SQL,存在 SQL 注入风险,适用于简单查询。 |
PreparedStatement | 预编译 SQL,参数化传递,防止 SQL 注入,适合重复执行或含动态参数的 SQL。 |
CallableStatement | 调用存储过程。 |
示例:使用 PreparedStatement
String sql = "SELECT id, name FROM users WHERE age > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 18); // 设置参数(索引从 1 开始)
4. 执行 SQL 并处理结果
执行 SQL
查询操作(返回 ResultSet
):
ResultSet rs = pstmt.executeQuery();
更新操作(返回影响行数):
int rowsAffected = pstmt.executeUpdate(); // INSERT/UPDATE/DELETE
处理结果集
while (rs.next()) { int id = rs.getInt("id");
// 按列名获取 String name = rs.getString(2); // 按索引获取(从 1 开始)
System.out.println(id + ": " + name); }
结果集类型:
TYPE_FORWARD_ONLY
:默认,只能向前遍历。TYPE_SCROLL_INSENSITIVE
:可滚动,不感知数据库变化。TYPE_SCROLL_SENSITIVE
:可滚动,感知数据库变化(多数驱动不实现)。
5. 事务管理(可选)
通过 Connection
控制事务:
try { conn.setAutoCommit(false); // 关闭自动提交
// 执行多个 SQL...
conn.commit(); // 提交事务
} catch (SQLException e) {
conn.rollback(); // 回滚事务
} finally {
conn.setAutoCommit(true); // 恢复自动提交
}
隔离级别:通过 conn.setTransactionIsolation(level)
设置(如 READ_COMMITTED
)。
6. 释放资源
必须显式关闭资源以避免内存泄漏和连接耗尽:
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close(); // 实际中连接池会回收而非真正关闭
} catch (SQLException e) {
e.printStackTrace();
}
相关文章:
JDBC执行sql过程
1. 加载数据库驱动 JDBC 通过 驱动(Driver) 实现与不同数据库的通信。驱动需提前加载到 JVM: 手动加载(JDBC 4.0 前): Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...
VNC windows连接ubuntu桌面
✅ 步骤 1:安装 VNC 服务器 首先,我们需要在 Winux 系统上安装一个 VNC 服务器。这里我们使用 tigervnc 作为例子,它是一个常用的 VNC 服务器软件。 打开终端并更新你的软件包: sudo apt update安装 tigervnc 服务器:…...
CSS中的@import指令
一、什么是import指令? import 是CSS提供的一种引入外部样式表的方式,允许开发者在CSS文件中引入其他CSS文件,或者在HTML的<style>标签中引入外部样式。与常见的<link>标签相比,import 提供了一种更“CSS原生”的样式…...

【安装配置教程】ubuntu安装配置Kodbox
目录 一、引言 二、环境配置 1. 服务器配置 2. 必备组件 三、安装基础环境 1. 安装 PHP 8.1 及扩展 2. 安装 MySQL 数据库 3.安装 Redis(可选,提升缓存性能) 4. 配置nginx文件 4.1. 创建 Kodbox 站点目录 4.2. 编写 Ng…...
【软件设计师:数据库】13.数据库控制与安全
一、数据库语言SQL SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语…...

LabVIEW车牌自动识别系统
在智能交通快速发展的时代,车牌自动识别系统成为提升交通管理效率的关键技术。本案例详细介绍了基于 LabVIEW 平台,搭配大恒品牌相机构建的车牌自动识别系统,该系统在多个场景中发挥着重要作用,为交通管理提供了高效、精准的解决方…...
el-menu 折叠后小箭头不会消失
官方示例 <template><el-radio-group v-model"isCollapse" style"margin-bottom: 20px"><el-radio-button :value"false">expand</el-radio-button><el-radio-button :value"true">collapse</el-ra…...

c语言第一个小游戏:贪吃蛇小游戏01
hello啊大家好 今天我们用一个小游戏来增强我们的c语言! 那就是贪吃蛇 为什么要做一个贪吃蛇小游戏呢? 因为这个小游戏所涉及到的知识有c语言的指针、数组、链表、函数等等可以让我们通过这个游戏来巩固c语言,进一步认识c语言。 一.我们先…...
6. HTML 锚点链接与页面导航
在开发长页面或文档类网站时,锚点链接(Anchor Links)是一个非常实用的功能。通过学习 HTML 锚点技术,将会掌握如何在同一页面内实现快速跳转,以及如何优化长页面的导航体验。以下是基于给定素材的学习总结和实践心得 一、什么是锚点链接? 锚点链接(也称为页面内链接)允…...

[项目总结] 抽奖系统项目技术应用总结
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
Axios替代品Alova
介绍alova | Alova.JS Multipart 实体请求 | Axios中文文档 | Axios中文网 1. 极致的轻量与性能 Tree-shaking优化:仅打包使用到的功能模块 零依赖:基础包仅 4KB(Axios 12KB) 2. 智能请求管理(开箱即用࿰…...
Python OpenCV性能优化与部署实战指南
在计算机视觉领域,OpenCV作为开源视觉库的标杆,其性能表现直接影响着从工业检测到AI模型推理的各类应用场景。本文结合最新技术趋势与生产实践,系统性梳理Python环境下OpenCV的性能优化策略与部署方案。 一、性能优化核心技术矩阵 1.1 内存…...
k8s的flannel生产实战与常见问题排查
关于 Kubernetes Flannel 插件的详细教程及生产环境实战指南,涵盖核心概念、安装配置、常见问题排查与优化策略 Flannel通信流程 一、Flannel 概述 Flannel 是 Kubernetes 最常用的 CNI(Container Network Interface)插件之一,…...
删除链表倒数第N个节点
Leetcode(19): 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 分析: 首要目标就是找到第N个节点的前一个节点,因为只有通过这个节点(cur)才可进行对…...
互联网大厂Java面试实录:Spring Boot与微服务架构在电商场景中的应用解析
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...
UGUI如何使用EventTrigger
前言 在 Unity 的 UGUI 系统中,EventTrigger 是一个强大的组件,允许开发者监听和处理多种 UI 交互事件。以下是详细的使用方法、示例代码、优缺点分析以及注意事项。 一、EventTrigger 基本用法 1. 添加 EventTrigger 组件 在 Unity 编辑器中选中 UI 对象(如 But…...
从代码学习深度学习 - 单发多框检测(SSD)PyTorch版
文章目录 前言工具函数数据处理工具 (`utils_for_data.py`)训练工具 (`utils_for_train.py`)检测相关工具 (`utils_for_detection.py`)可视化工具 (`utils_for_huitu.py`)模型类别预测层边界框预测层连接多尺度预测高和宽减半块基础网络块完整的模型训练模型读取数据集和初始化…...

机器视觉的平板电脑屏幕组件覆膜应用
在现代智能制造业中,平板电脑屏幕组件覆膜工序是确保产品外观和功能完整性的重要环节。随着技术的进步,传统的覆膜方式已经无法满足高速度、高精度的生产需求。而MasterAlign视觉系统的出现,将传统覆膜工艺转变为智能化、自动化的生产流程。在…...

更换内存条会影响电脑的IP地址吗?——全面解析
在日常电脑维护和升级过程中,许多用户都会遇到需要更换内存条的情况。与此同时,不少用户也担心硬件更换是否会影响电脑的网络配置,特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系,帮助读者理解这两者之间的本质…...
SQLite数据库加密(Java语言、python语言)
1. 背景与需求 SQLite 是一种轻量级的关系型数据库,广泛应用于嵌入式设备、移动应用、桌面应用等场景。为了保护数据的隐私与安全,SQLite 提供了加密功能(通过 SQLCipher 扩展)。在 Java 中,可以使用 sqlite-jdbc 驱动与 SQLCipher 集成来实现 SQLite 数据库的加密。 本…...
RISC-V入门资料
以下是获取 RISC-V 相关资料的权威渠道和推荐资源,涵盖技术文档、开发工具、社区支持等: 1. 官方资料 RISC-V 国际基金会官网 https://riscv.org 核心文档:ISA 规范(包括基础指令集(RV32I/RV64I)、扩展指令…...
C++访问权限控制符
访问权限控制符 在C中,访问权限控制符是用来限制类或结构体成员(例如:变量、函数等)的访问级别的。C提供了三种访问权限级别: Public 访问权限: 公共成员可以在任何地方被访问,包括类的内部、…...

VMware安装CentOS Stream10
文章目录 安装下载iso文件vmware安装CentOS Stream创建新虚拟机安装CentOS Stream10 安装 下载iso文件 官方地址:跳转链接 vmware安装CentOS Stream 创建新虚拟机 参考以下步骤 安装CentOS Stream10 指定ISO文件 开启虚拟机选择Install CentOS Stream 10 鼠…...
互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-2
互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-2 第一轮提问:云原生架构选型与微服务治理 面试官(技术总监):郑薪苦,我们先从一个基础问题开始。你了解Spring Cloud和Kubernetes在微服务架构中…...

基于Dify实现对Excel的数据分析
在dify部署完成后,大家就可以基于此进行各种应用场景建设,目前dify支持聊天助手(包括对话工作流)、工作流、agent等模式的场景建设,我们在日常工作中经常会遇到各种各样的数据清洗、格式转换处理、数据统计成图等数据分…...

资产月报怎么填?资产月报填报指南
资产月报是企业对固定资产进行定期检查和管理的重要工具,它能够帮助管理者了解资产的使用情况、维护状况和财务状况,从而为资产的优化配置和决策提供依据。填写资产月报时,除了填报内容外,还需要注意格式的规范性和数据的准确性。…...

MIT XV6 - 1.3 Lab: Xv6 and Unix utilities - primes
接上文 MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong primes 继续实验,实验介绍和要求如下 (原文链接 译文链接) : Write a concurrent prime sieve program for xv6 using pipes and the design illustrated in the picture halfway down this page and…...
Android学习总结之kotlin协程面试篇
一、协程基础概念与原理类真题 真题 1:协程是线程吗?为什么说它是轻量级的?(字节跳动 / 美团) 解答: 本质区别: 线程是操作系统调度的最小单位(内核态),协…...

从前端视角看网络协议的演进
别再让才华被埋没,别再让github 项目蒙尘!github star 请点击 GitHub 在线专业服务直通车GitHub赋能精灵 - 艾米莉,立即加入这场席卷全球开发者的星光革命!若你有快速提升github Star github 加星数的需求,访问taimili…...

Docker中运行的Chrome崩溃问题解决
问题 各位看官是否在 Docker 容器中的 Linux 桌面环境(如Xfce)上启动Chrome ,遇到了令人沮丧的频繁崩溃问题?尤其是在打开包含图片、视频的网页,或者进行一些稍复杂的操作时,窗口突然消失?如果…...