当前位置: 首页 > news >正文

MySQL --JDBC

一.什么是JDBC

JDBC(JavaDataBaseConnectivity,Java数据库连接)是Java程序和数据库之间的桥梁,包含 了⼀套Java定义的⽤于执⾏SQL语句的接⼝,使开发者能够编写数据库的程序JDBC的主要作⽤是: 与数据库建⽴连接、发送SQL语句和处理数据库执⾏结果。

二.JDBC的使用过程

再使用客户端操作数据库时是以下步骤:

连接数据库服务--》发送SQL程序--》得到返回结果并显示--》关闭连接

同样如果使⽤程序操作数据库也会经历以上⼏步,⼤家应该可以想到,为实现上述步骤,可以编写 相应的代码实现数据库连接,发送SQL语句,处理结果并显⽰,最后关闭连接。

但是不同的数据库对于同⼀个操作不论是协议还是参数都各有不同如果让程序员⾃⼰去实现,那 就必须针对不同的数据库进⾏编码实现,这个⼯作量和维护成本显然太⼤。

Java采取的做法是把以上操作步骤定义了相应的接⼝,具体的实现交给数据库⼚商去做,Java程序 员只需要按照需要调⽤接⼝中定义的⽅法即可,这样不论使⽤什么数据库,都对于Java程序没有任 何影响,即便是换⼀个数据库,也只需要换⼀下相应⼚商的实现依赖

JDBC使⽤过程可以概括为:加载数据库⼚商的驱动包、建⽴连接、创建Statement、执⾏SQL、 处理结果释放资源和关闭连接。

三.JDBC使用准备工作

1.创建Maven⼯程并配置国内镜像(调整下载环境)

原因:Maven是一个仓库,有着很多功能,目前了解配置镜像,它影响驱动包的下载(管理着依赖)

由于该仓库默认是国外的,由于国家防火墙等问题,可能导致驱动包下载失败,所以得配置国内镜像以确保驱动包的下载

过程:修改Maven配置文件,在settings.xml文件中修改<mirrors></mirrors>标签中的内容

IDEA自带的Maven配置文件路径:IDEA安装⽬录/plugins/maven/lib/maven3/conf/settings.xml

单独安装的Maven配置⽂件路径为:maven安装⽬录/conf/settings.xml

2.获取驱动包

在Maven仓库Maven Repository: Search/Browse/Explore搜索MySQL,找到自己对应版本驱动包

3.下载驱动包

作用:它类似于一个翻译官

  • Java程序:说的是“Java语言”(一种标准的、通用的数据库操作指令,即JDBC API)。

  • 数据库(MySQL, Oracle等):说的是“方言”(每种数据库自己私有的、优化的通信协议和SQL语法)。

Java程序没法直接听懂MySQL的“方言”,反之亦然。这时,MySQL驱动包 就扮演了这个“翻译官”的角色。它站在两者中间,负责:

  1. :听懂Java程序发出的标准JDBC指令(如 connection.createStatement())。

  2. 翻译:将这些指令翻译成MySQL数据库能理解的特定协议和格式。

  3. :通过网络将翻译好的指令发送给MySQL数据库。

  4. 传话:再将数据库返回的结果(查询到的数据、成功/失败状态)翻译成Java程序能理解的格式,传回给程序。

没有这个“翻译官”,Java程序和数据库就无法沟通。

在⼯程中的 pom.xml 中的 <dependencies></dependencies> 标签中添加MySQL依赖,然后下载

四.总结

通过Maven来轻松地获取和管理数据库驱动包;这个驱动包在运行时实现了JDBC接口;你的Java程序则面向JDBC接口编程,从而能够以统一、标准的方式访问数据库,而无需关心底层细节

五.JDBC的使用

1.使用驱动管理类DriverManager的静态方法来连接数据库

缺点:

会发生SQL注入,SQL注⼊即是指web应⽤程序对⽤⼾输⼊数据的合法性没有判断或过滤不严,攻击者可以在web应 ⽤程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现⾮法操 作,以此来实现欺骗数据库服务器执⾏⾮授权的任意查询,从⽽进⼀步得到相应的数据信息。

举例:

解决方案:使用 PreparedStatement 类(Statement的子类)中的 preparedStatement 方法,预编译SQL语句对象,SQL语句被预编译并存储在 PreparedStatement 对象中,可以使⽤该对象多次 执⾏SQL语句,同时可以解决SQL注⼊问题。

使用:

2.使用数据源DataSource数据源(常用)

使用原因:

DriverManager 每次调⽤ getConnection ⽅法都会初始化⼀个新的连接,使⽤完成后会关闭真实 连接,导致资源浪费。

DataSource使⽤了连接池的技术,会在初始化时创建⼀定数量的数据库连接,这些连接可以重 复使⽤,关闭时并不是真正关闭连接⽽是将连接归还给连接池,以供后续使⽤,有效地提⾼ 资源利⽤率和和性能

使用:

优化:


文章转载自:

http://Kaah4eVH.btgxf.cn
http://WqPgKZG5.btgxf.cn
http://nAF4vZGP.btgxf.cn
http://ieNRWBlu.btgxf.cn
http://wgMzoTg6.btgxf.cn
http://8Fl2OElm.btgxf.cn
http://xraZbF2P.btgxf.cn
http://fqBui2es.btgxf.cn
http://kTySclJ3.btgxf.cn
http://lKuaEnc5.btgxf.cn
http://bNwWLb73.btgxf.cn
http://nAshgYZ6.btgxf.cn
http://zOfIckNK.btgxf.cn
http://WxOo08KD.btgxf.cn
http://43WtBMOD.btgxf.cn
http://4ZXTCix0.btgxf.cn
http://EmAN2OoJ.btgxf.cn
http://82Y5zdOV.btgxf.cn
http://tVl2cntp.btgxf.cn
http://3AoMg2Kk.btgxf.cn
http://O9jS3q1V.btgxf.cn
http://TGq16uV0.btgxf.cn
http://6wms54qM.btgxf.cn
http://AfDcYaBd.btgxf.cn
http://mfp6v6pY.btgxf.cn
http://IcxASnRf.btgxf.cn
http://fPLM34PD.btgxf.cn
http://kgtuQye8.btgxf.cn
http://enHbV5rO.btgxf.cn
http://X7lPEPxq.btgxf.cn
http://www.dtcms.com/a/385449.html

相关文章:

  • python使用pyodbc通过不同认证方式连接sqlserver数据源
  • java通过线程池加CompletableFuture实现批量异步处理
  • Coze源码分析-资源库-创建知识库-后端源码-详细流程梳理
  • 极简版 Nginx 反向代理实验步骤
  • python-86-基于Graphviz或Mermaid绘制流程图
  • 智能农机无人驾驶作业套圈路径规划
  • Rayon Rust中的数据并行库入门教程
  • NumPy数组与Python列表的赋值行为解析
  • 基于 AI 的大前端智能家居控制应用开发
  • RAGFlow集成SGLang部署的大模型:实现OpenAI API兼容的自定义LLM调用
  • sqlsever 内存配置错误无法连接,后面恢复连接
  • 51c大模型~合集182
  • 2025.9.15总结
  • 深入理解 Roo Code 的 Code Actions 功能
  • Java---线程池讲解
  • PEFT QLora Deepspeed Zero Stage 3 Offload Trainning
  • 线程概念,控制
  • 扫描仪常见样式:平板与馈纸的特性与适用场景
  • Python进程和线程——多线程
  • 2025年AIOCR审核革命!七大智能费控报销系统终结手工录入
  • 从循环到矩阵运算:矢量化加速机器学习的秘诀
  • R 语言入门实战|第七章 程序:从“老虎机”项目学透流程控制与代码优化
  • clickhouse 中SUM(CASE WHEN ...) 返回什么类型?
  • NR帧结构
  • 【联合查询】
  • 常见IC封装详解:从DIP到BGA的演进与应用
  • DockerComposeUI+cpolar:容器管理的远程可视化方案
  • tcp的三次握手与四次挥手简介
  • 2025算法八股——深度学习——MHA MQA GQA
  • 常见岩性分类与油气勘探意义笔记