【Java】初识JDBC

🌺个人主页:Dawn黎明开始

🎀系列专栏:Java
每日一句:向阳而生,逐光而行

📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️


文章目录

📋前言

🔐什么是JDBC

🔑应用程序使用JDBC访问数据库的方式

🔑JDBC驱动程序分类

(1)JDBC-ODBC桥驱动程序

(2)本地API驱动程序

(3)网络协议驱动程序

(4)本地协议驱动

​  📝总结


 

📋前言

      在软件开发过程中,经常要使用数据库存储和管理数据。为了在Java中提供对数据库访问的支持,SUN公司于1996年提供了一套访问数据库的标准Java类库,即JDBC。

🔐什么是JDBC

      JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套Java API连接到关系数据库,并使用SQL语句完成对数据库中数据的查询、新增、更新和删除等操作。使用JDBC连接数据库驱动,用户就不必用户不必编写Java程序与数据库交互的底层代码,使得代码的通用性更强。

🔑应用程序使用JDBC访问数据库的方式

🔑JDBC驱动程序分类

      JDBC本身提供的是一套数据库操作标准,而JDBC中提供的这些标准又需要各个数据库厂商实现,针对每一个数据库而言,每一个数据库厂商都会为其数据库产品提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序可以分为以下4类。

(1)JDBC-ODBC桥驱动程序

      JDBC-ODBC桥驱动程序由SUN公司开发,是JDK提供的数据库操作标准API,这种类型的驱动实际是把所有 JDBC的调用传递给ODBC(Open Database Connectivity,开发数据库连接),再由ODBC调用本地数据库驱动代码,操作数据库中的数据。通过JDBC-ODBC桥驱动操作数据库的方式如下所示:

由于JDBC-ODBC桥驱动程序经过几次中间调用,所以执行效率比较低

(2)本地API驱动程序

      本地API驱动直接将JDBC API 映射成数据库特定的客户端API。这种驱动包含特定数据库的本地API,通过它可以访问数据库的客户端。通过本地API驱动操作数据库的方式如下所示:

通过本地 API驱动程序访问数据库减少了ODBC的调用环节,提高了数据库访问的效率。

(3)网络协议驱动程序

      网络协议驱动是用纯Java语言编写的,JDBC把对数据库的访问请求传递给网络上的中间件服务器,中间件服务器先把请求转换为数据库通信协议请求,然后再通过中间件服务器与数据库进行交互。使用这种类型驱动程序的Java应用程序可以与服务器端完全分离,具有很大的灵活性。通过网络协议驱动操作数据库的方式:

(4)本地协议驱动

      本地协议驱动是用使用纯Java语言编写的。本地协议驱动通常由数据库厂商直接提供驱动的JAR包,本地协议驱动程序直接将JDBC调用转换为数据库特定的网络通信协 议,然后与数据库进行交互。通过本地协议驱动操作数据库的方式:

📝总结

      上述4种类型中,JDBC-ODBC桥驱动程序由于执行效率不高,更适合开发应用时的一种过渡方案; 如果是在内联网(Intranet)的应用,可以考虑本地API 驱动程序;如果是基于互联网(Internet)并且需要同时连接多个不同种类的数据库, 并发连接要求高的应用,可以考虑JDBC-Net Driver。如果是基于互联网(Internet)但连接单一数据库的应用,可以考虑Native Protocol Driver


🌺欢迎大家在评论区进行讨论和指正!

 

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

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

相关文章

Springmvc实现增删改差

一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…

快速在WIN11中本地部署chatGLM3

具体请看智谱仓库github:GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型 或者Huggingface:https://huggingface.co/THUDM/chatglm3-6b 1. 利用Anaconda建立一个虚拟环境: conda create -n chatglm3 pyt…

深信服防火墙路由模式开局部署-手把手教学(小白篇)

PS:深信服的设备只有400能够通过console连接,一般用户是无法连接的,所以大家不要妄想着从Console连接设备了,开局就通过MANAGE进入Web就可以 接通电源后,开机拿一根网线,一端连接防火墙的MANAGE口&#xf…

CTF-PWN-QEMU-前置知识

文章目录 QEMU 内存管理(QEMU 如何管理某个特定 VM 的内存)MemoryRegion gpa->hpaFlatView:表示MR 树对应的地址空间FlatRange:存储不同MR对应的地址信息AddressSpace:不同类型的 MemoryRegion树RAMBlock总体简化图 QEMU 设备模拟 &#x…

微机原理_2

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 下列数中最大的数为() A. 10010101B B. (126)8 C. 96H D. 100 CPU 执行 OUT 60H,…

项目环境配置 本地/测试/预发/生产

在本地目录下新建文件 dev测试环境 development 本地开发环境 production 生产环境 uat预发布环境 .env.dev VUE_APP_API_PATH /api # 测试 VUE_APP_API_PATH http:// # 生成dist名称 VUE_APP_DIST dist_dev .env.development # 本地开发环境 VUE_APP_API_PATH…

使用C++从0到1实现人工智能神经网络及实战案例

引言 既然是要用C++来实现,那么我们自然而然的想到设计一个神经网络类来表示神经网络,这里我称之为Net类。由于这个类名太过普遍,很有可能跟其他人写的程序冲突,所以我的所有程序都包含在namespace liu中,由此不难想到我姓刘。在之前的博客反向传播算法资源整理中,我列举…

【数字信号处理】傅里叶变换的离散性与周期性

傅里叶变换的离散性与周期性 2023年11月21日 #elecEngeneer 文章目录 傅里叶变换的离散性与周期性1. 符号说明2. 具体分析3. 序列的序号表示的DFT下链 1. 符号说明 t : 连续时间(时域)变量 ω : 频域变量,aka角频率 g : 时域函数 G : 频域函数 n : 时域采样序列序号…

『RabbitMQ』入门指南(安装,配置,应用)

前言 RabbitMQ 是在 AMQP(Advanced Message Queuing Protocol) 协议标准基础上完整的,可复用的企业消息系统。它遵循 Mozilla Public License 开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,建立在 Erlang …

C语言——文件操作

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 我辈皆凡人,用一生铺就的…

【管理运筹学】背诵手册(五)| 动态规划

五、动态规划 基本概念 阶段(Stage):将所给问题的过程,按时间或空间特征分解成若干相互联系的阶段,以便按次序去求解每阶段的解,常用字母 k k k 表示。 状态(State):…

Ubuntu20.04 install pnpm

npm install -g pnpm referrence link: Installation | pnpmPrerequisiteshttps://pnpm.io/installation

【libGDX】使用Mesh绘制立方体

1 前言 本文主要介绍使用 Mesh 绘制立方体,读者如果对 Mesh 不太熟悉,请回顾以下内容: 使用Mesh绘制三角形使用Mesh绘制矩形使用Mesh绘制圆形 在绘制立方体的过程中,主要用到了 MVP (Model View Projection&#xff0…

Javaweb之前后台分离开发介绍的详细解析

2.1 前后台分离开发介绍 在之前的课程中,我们介绍过,前端开发有2种方式:前后台混合开发和前后台分离开发。 前后台混合开发,顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点&a…

C++11『lambda表达式 ‖ 线程库 ‖ 包装器』

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.lambda表达式1.1.仿函数的使用1.2.lambda表达式的语法1.3.lambda表达式的使用…

C/C++ 开发SCM服务管理组件

SCM(Service Control Manager)服务管理器是 Windows 操作系统中的一个关键组件,负责管理系统服务的启动、停止和配置。服务是一种在后台运行的应用程序,可以在系统启动时自动启动,也可以由用户或其他应用程序手动启动。…

win10戴尔电脑安装操作系统遇到的问题MBR分区表只能安装GPT磁盘

首先按F2启动boot管理界面 调整启动盘的启动顺序,这里启动U盘为第一顺序。 第一步 选择安装程序的磁盘 第二步 转换磁盘为GPT磁盘 一般出现 磁盘0和1,说明存在两个盘 ,这里两个盘不是说的是C盘和D盘的问题,而是在物理上实际存在…

2024年度投资策略:AI大模型和半导体国产化加速

今天分享的是AI系列深度研究报告:《2024年度投资策略:AI大模型和半导体国产化加速》。 (报告出品方:东方证券) 报告共计:48页 前言: 行情回顾与未来展望 电子板块涨幅转正,信心逐渐回归。截至…

Ps:参考线

参考线 Guides用于帮助精确地定位图像或元素,显示为浮动在图像上的非打印线,可以移动或移除,还可以临时锁定。 Ps 中的参考线可分为三大类:画布参考线、画板参考线和智能参考线。 可在“首选项/参考线、网格和切片”中设置参考线的…

【Java线程通信】一窥究竟

今天我们要聊一聊Java线程通信。如果你是一个Java开发者,那么你肯定知道线程是Java中的一个重要概念。线程是程序执行的最小单位,它可以独立运行,也可以与其他线程共享资源。那么,线程之间如何进行通信呢?这就是我们今…