JDBC1 Mysql驱动,连接数据库

news2025/1/8 12:39:20

JDBC

一、JDBC

Java Database Connectivity:Java访问数据库的解决方案
JDBC定义了一套标准接口,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去实现这些接口。
JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换

1.JDBC相关类和接口

Driver 接口:加载驱动程序。
DriverManager 类:装人所需的 JDBC 驱动程序,编程时调用它的方法来创建连接。
Connection 接口:编程时使用该类对象创建 Statement 对象。
Statement 接口:编程时使用该类对象得到 ResultSet 对象。
ResultSet 类:负责保存 Statement 执行后所产生的查询结果。

1.1DriverManager

DriverManager:驱动管理对象
注册驱动(告诉程序该使用哪一个数据库驱动)
在com.mysql.jdbc.Driver类中存在静态代码块(通过查看源码发现)

//这是com.mysql.jdbc.Driver的静态代码块,只要使用这个类,就会执行这段代码
//而Class.forName("com.mysql.jdbc.Driver")就正好使用到了这个类
static {
	try {
		java.sql.DriverManager.registerDriver(new Driver());
	} catch (SQLException E) {
		throw new RuntimeException("Can't register driver!");
	}
}

注意:我们不需要通过DriverManager调用静态方法registerDriver(),因为只要Driver类被使用,则会执行其静态代码块完成注册驱动

所以后边我们其实可以省略注册驱动的步骤(可以注释掉上个案例的注册驱动的步骤,也可以查询到数据)
mysql5之后可以省略注册驱动的步骤。在jar包中,存在一个java.sql.Driver配置文件,文件中指定了com.mysql.jdbc.Driver

获取数据库连接(获取到数据库的连接并返回连接对象)

static Connection getConnection(String url, String user, String password);
返回值:Connection数据库连接对象
参数
url:指定连接的路径。语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
user:用户名
password:密码
1.2Connection

Connection:数据库连接对象
获取执行者对象
获取普通执行者对象:Statement createStatement();
获取预编译执行者对象:PreparedStatement prepareStatement(String sql);
管理事务
开启事务:setAutoCommit(boolean autoCommit); 参数为false,则开启事务。
提交事务:commit();
回滚事务:rollback();
释放资源
立即将数据库连接对象释放:void close();

1.3Statement

Statement:执行sql语句的对象
执行DML语句:int executeUpdate(String sql);
返回值int:返回影响的行数。
参数sql:可以执行insert、update、delete语句。
执行DQL语句:ResultSet executeQuery(String sql);
返回值ResultSet:封装查询的结果。
参数sql:可以执行select语句。
释放资源
立即将执行者对象释放:void close();

在这里插入图片描述

1.4ResultSet

ResultSet:结果集对象
判断结果集中是否还有数据:boolean next();
有数据返回true,并将索引向下移动一行
没有数据返回false
获取结果集中的数据:XXX getXxx(“列名”);
XXX代表数据类型(要获取某列数据,这一列的数据类型)
例如:String getString(“name”); int getInt(“age”);
释放资源
立即将结果集对象释放:void close();

2.JDBC工作原理

在这里插入图片描述

二、连接mysql数据库

1.导入jar包

创建lib目录,然后导入mysql-connector-java-8.0.22.jar,右键Bulid Path
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 使用DriverManager加载驱动类

加载驱动类
通过Class.forName( )方法(反射) 完成驱动类的注册
找到驱动类 右键复制全路径
在这里插入图片描述

3.Connection接口

根据URL连接找到对应的

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

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

相关文章

集成OpenFeign和Sentinel实现自定义服务降级Fallback及网关流量控制

文章目录 sentinel下载安装启动sentinel访问sentinelpmhub-gateway 整合 sentinel引入依赖YML配置文件Nacos持久化配置 启动pmhub-gateway, 查看sentinel控制台启动结果如图相关名词解释 OpenFeign和 Sentinel 集成实现自定义 fallback 服务降级 Sentinel 和 Gateway 集成实现网…

苹果在iOS 18.1中向第三方开发者开放iPhone的NFC芯片

苹果公司今天宣布,开发者很快就能首次在自己的应用程序中提供 NFC 交易功能,而目前这主要是Apple Pay独有的功能。从今年晚些时候的 iOS 18.1 开始,开发者将可以使用新的 API 提供独立于 Apple Pay 和 Apple Wallet 的应用内非接触式交易。 这…

多线程之并发锁

多线程之并发锁 Synchronized 特性: 可重入,持有该锁的线程可以再次获取锁不可中断:获取了Synchronized锁之后就必须要等其释放锁,响应不了中断灵活性不高:使用Synchronized锁只能是进入到代码块内执行完了才释放锁…

基于DPU云盘挂载的Spark优化解决方案

1. 方案背景和挑战 Apache Spark,作为当今大数据处理领域的佼佼者,凭借其高效的分布式计算能力、内存计算优化以及强大的生态系统支持,已牢固确立其在业界的标杆地位。Spark on Kubernetes(简称K8s)作为Spark与Kuber…

代码随想录训练营 Day30打卡 贪心算法 part04 452. 用最少数量的箭引爆气球 435. 无重叠区间 763. 划分字母区间

代码随想录训练营 Day30打卡 贪心算法 part04 一、 力扣452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球…

YoloV8改进策略:Block改进|LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构|复现LeYolo,轻量级Yolo改进

摘要 在目标检测中,深度神经网络的计算效率至关重要,尤其是随着新型模型越来越注重速度而非有效计算量(FLOP)。这一发展趋势在某种程度上忽视了嵌入式和面向移动设备的AI目标检测应用。在本文中,我们基于FLOP关注于高…

热泵干燥应用举例

热泵在木材加工中的应用主要是热泵干燥,具有能耗低、干燥质量好等特点。热泵木材干燥装置的基本结构是封闭式干燥窑,其中热泵机组的结构有单热源型(图18-4)、双热源型(图18-5)和空气回热型(图18…

深入理解Java中的ConcurrentHashMap:高效线程安全的并发容器

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

Java并发:内存屏障,Atomic类,CAS函数,伪共享

阅读本文之前可以看一看 Java 多线程基础: Java:多线程(进程线程,线程状态,创建线程,线程操作) Java:多线程(同步死锁,锁&原子变量,线程通信&…

【学习笔记】A2X通信的协议(十)- 通过PC5的直接探测与避让(DDAA)

3GPP TS 24.577 V18.1.0的技术规范,主要定义了5G系统中A2X通信的协议方面,特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析: 8. 通过PC5的直接探测与避让(DDAA) 8.1 概述 本条款描述了UE之间以及UE上…

论文阅读:Efficient Core Maintenance in Large Bipartite Graphs | SIGMOD 2024

还记得我们昨天讨论的《Querying Historical Cohesive Subgraphs over Temporal Bipartite Graphs》这篇论文吗? https://blog.csdn.net/m0_62361730/article/details/141003301 这篇(还没看的快去看) 这篇论文主要研究如何在时间双向图上查询历史凝聚子图,而《E…

CAD二次开发IFoxCAD框架系列(18)-块表操作

1. 块表的查询 1.1 查找名为“自定义块”的块表中的图块记录 using var tr new DBTrans(); if (tr.BlockTable.Has("自定义块")) {//要执行的操作 }遍历块表并打印所有的块表的图块名称 public void Test_DBTrans_BlockCount() {using var tr new DBTrans();var…

CentOS7.9上通过KVM安装Centos虚拟机

目录 1 开发前准备(先确保服务器可以虚拟化): 2、安装KWM环境 3、创建镜像文件存放目录 4、创建镜像文件存放目录 5、安装桥连接虚拟网络 6、安装虚拟机 7、配置操作系统 8、虚拟机配置网卡地址 9、克隆虚拟机执行 1开发前准备&am…

Git文件管理技巧:轻松删除与查看文件,忽略不必要的文件与文件夹!

避免文件混乱:Git 文件操作技巧 一、Git工作原理概述二、删除文件三、查看指定文件的修改四、指定不需要 Git 管理的文件五、总结 一、Git工作原理概述 Git是一种分布式版本控制系统,其核心在于其高效的快照机制、强大的分支与合并功能、本地开发的灵活…

数据集与数据库:有什么区别?

数据集和数据库是我们在处理数据时经常听到的两个常用词。虽然它们听起来很相似,但它们具有不同的特征并用于不同的用途。本文深入探讨数据集和数据库之间的主要区别,探索了它们的结构、数据类型和各种其他功能,以帮助您做出明智的决定&#…

回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出

回归预测|基于灰狼优化GWO-Transformer-LSTM组合模型的数据回归预测Matlab程序 多特征输入单输出 文章目录 前言回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出GWO-Transformer-BiLSTM 一、GWO-Transformer-BiLSTM模型二、实验…

uniapp打包H5的时候 清楚缓存(不安装依赖的前提下)

问题 在写项目的时候,打包好一个H5 发布成功,后来又重新打包新的包进行更新迭代,但是用户手机上还是上一个版本,本地缓存还是没有清除。 解决问题 步骤一:html不缓存 在html中,解决缓存的方法主要是依赖…

文章解读与仿真程序复现思路——电力自动化设EI\CSCD\北大核心《海上风电全直流汇集送出系统自适应振荡抑制策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【小bug】springMVC通过json传参无法解析参数

0.问题描述 通过postman测试使用json传参的时候,发现不论怎么修改,都无法获取参数,解析对象。 反复检查请求url,请求内容均为正常。 以下是postman测试结果: 日志提示无法解析参数,内容如下:…

C# VideoCapture 多路视频播放

目录 效果 项目 代码 下载 效果 C#VideoCapture多路视频播放 项目 代码 using OpenCvSharp; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks…