Java开发入门到精通之Java的数据库访问

news2024/11/14 20:48:13

一、前言

在应用程序开发中,需要使用数据库管理和存储各种数据。在Java中,提供了一个JDBC技术(Java Database Connectivity,JDBC,Java数据库连接),它的作用是连接数据库并访问。接下来小编带大家一起来学习JDBC技术!

二、关系数据库

1.目前,各种关系数据库的操作基本使用SQL语言,SQL(Structured Query Language)是一个结构化查询语言。

2.常用的SQL语句,如下所示:
IMG_256
三、JDBC的概述

1.JDBC是一种执行SQL语句的Java API。它由一组使用Java语言编写的类和接口组成,使开发人员可以使用Java API来编写数据库应用程序。

2.使用JDBC的技术向各种关系数据库发送SQL语句就很方便,就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序,只需要JDBC API写一个程序向相应的数据库发送SQL语句即可。开发人员使用Java语言和SQL语句编写的数据库应用程序,可以在任何平台上运行。

3.JDBC驱动可以分为四种类型,包括了JDBC-ODBC桥、本地API驱动、网络协议驱动、本地驱动。在后面会详细的介绍这四种类型。

四、JDBC驱动类型

(一)JDBC-ODBC桥

JDBC-ODBC桥:通过驱动程序将所有的JDBC调用传给ODBC(Open Database Connectivity,ODBC,开放数据库互连),然后ODBC调用本地数据库接口访问数据库,这种执行效率很低,它是不适合需要存储大量数据的应用。

如下图所示:
IMG_257
1)首先SQL命令通过ODBC-Bridge传给ODBC,再由ODBC连接数据库并传递SQL命令到数据库中。

2)ODBC接受数据库返回结果,然后通过ODBC-Bridge返回的结果给应用程序。

(二)本地API驱动

本地API驱动:通过JDBC-Native API桥接器的转换,然后把客户机API上的JDBC调用转换成Oracle、Sybase、Informix、DB2,最后存取数据库。

如下图所示:
IMG_258
1)首先应用程序去调用JDBC Driver,然后JDBC Driver使用本地函数库和数据库进行沟通。

2)本地函数库返回执行结果给JDBC Driver,最后JDBC Driver返回结果给应用程序。

(三)网络协议驱动

网络协议驱动:把JDBC 转换成与 DBMS 无关的网络协议,该协议又给某个服务器转换成一种DBMS的协议。在该网络服务器有个中间件(middleware)可以把Java客户机连接到不同的数据库中,它所使用的具体协议来自提供者。

如下图所示:
IMG_259
1)通过SQL命令使JDBC Driver传给Middleware Server中,然后Middleware Server把SQL命令传给数据库,并和数据库进行沟通。

2)将结果返回给Middleware Server,最后JDBC Driver返回的结果给应用程序。

(四)本地协议驱动

本地协议驱动:通过把JDBC调用转换成具体的数据库服务器,让它可以接受网络协议,然后允许客户机上来调用DBMS服务器(数据库管理系统(Database Management System,DBMS)),它是Intranet访问最有效的一个解决方法。

如下图所示:
IMG_260
1)首先应用程序把SQL命令传给JDBC Driver,然后JDBC Driver通过连接数据库传给SQL命令。

2)将执行的结果返回给JDBC Driver,最后JDBC Driver返回结果给应用程序。

五、总结

1.本文介绍了关系数据库、JDBC的概述、JDBC驱动类型。

2.关系数据库SQL是一种结构化查询语言,介绍它的常用SQL语句,例如增删改查。

3.JDBC是一种执行SQL语句的Java API。它由一组使用Java语言编写的类和接口组成,使开发人员可以使用Java API来编写数据库应用程序。

4.JDBC驱动类型分为四种,包括了JDBC-ODBC桥、本地API驱动、网络协议驱动、本地驱动,介绍了每一种驱动类型的作用。

5.希望大家通过本文的学习,对你有所帮助!

文章来源:网络 版权归原作者所有

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

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

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

相关文章

天猫汽车商详页的SSR改造实践

由于汽车业务的特殊性,天猫汽车基于 Rax 多页应用自建了商品详情的 H5 页面。自定义商详承载了众多业务能力和投放场景。随着业务的发展和页面承载内容的增多,开始出现白屏时间太长等体验问题。前端性能优化算是个老生常谈的问题,我们的页面已…

DBeaver安装教程

软件安装包官网地址https://dbeaver.io/但一般由于网络问题,我们是很慢才连接上,或者连接不上这里提供压缩包链接,解压可直接用,亲测链接:https://pan.baidu.com/s/14KGY0JakRTOHQVkiRUWc7g?pwdcxda 提取码&#xff1…

2022年第十二届APMCM亚太杯1月增赛E题思路分享

2022年亚洲及太平洋地区建模数学竞赛问题E 有多少颗核弹可以摧毁地球? 题目回顾: 1.基本数据分析 a) 哪些国家曾经拥有过核武器? b) 在过去的20年中,哪个国家的核武器库存减少或增加得最多? c) 在哪五年早,核武器试验发生的次数最多…

【笔记:模拟CMOS集成电路】噪声——分析基础(1)

【笔记:模拟CMOS集成电路】噪声——分析基础(1)前言1噪声的定义2噪声的描述2.1统计特性(1)平均功率(2)功率谱密度(PSD)2.2噪声相关指标(1)SNR&…

【C++】vector用法简单模拟实现

文章目录1.vector的介绍及使用1.1 vector基本概念1.2 vector的使用1.2.1 vector的定义 (构造函数)1.2.2 vector的迭代器使用1.2.3 vector 增删查改1.2.4 vector 迭代器失效问题(重点)1.2.5 vector 空间增长问题2. vector的模拟实现2.1 SGI版vector实现示…

Logback的使用

文章目录概述使用配置文件详解<appender>ConsoleAppenderFileAppenderRollingFileAppender滚动策略<root><encoder>日志级别概述 Logback是一个实现了Slf4j 规范的实现框架&#xff0c;log4j的作者实现了Logback。 下面这是Logback官网的介绍&#xff1a; …

排序算法之插入排序

目录 排序算法介绍 插入排序 算法流程 算法实现 python C 插入排序与冒泡排序 排序算法介绍 《Hello算法》是GitHub上一个开源书籍&#xff0c;对新手友好&#xff0c;有大量的动态图&#xff0c;很适合算法初学者自主学习入门。而我则是正式学习算法&#xff0c;以这本…

云原生丨DBSwitch数据迁移实践

文章目录一、前言一、部署1. 环境准备2. 安装包部署二、使用1.登录2. 使用步骤-gauss迁移到gauss3. 使用步骤-MySQL迁移到gauss三、postgres和 gauss差异说明一、前言 DBSwitch是一个异构数据库迁移工具&#xff0c;能够提供源端数据库向目的端数据库的批量迁移同步功能&#…

Spring的体系结构介绍

Spring框架采用的是分层架构&#xff0c;它一系列的功能要素被分成20个模块&#xff0c;这些模块大体分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation、Messaging和Test。 上图中&#xff0c;包含了Spring框架的所有模…

windows 安装docker使用教程

一、win10上安装docker注册docker账号配置虚拟化启用 bios 虚拟化&#xff0c;是否已启用可以通过任务管理器查看如果没有启动请看&#xff0c;否则可以直接跳到2开启 Hyper-V进行后续操作&#xff1a;irtualization Technology(VT)&#xff0c;中文译为虚拟化技术&#xff0c;…

LabVIEW拓扑

LabVIEW拓扑交换机拓扑是交换机模块上通道和继电器的组织表示形式。拓扑通常显示模块上继电器的默认连接&#xff0c;并标记通道名称。某些交换机模块可以使用多个拓扑或拓扑的变体。某些接线端子或附件可能会强制交换机模块使用给定的拓扑或拓扑集。NI-开关 支持 以下 拓扑&am…

009-Ensp-实验-VLAN间互联

实验要求 实现两台不同vlan的设备可以互联 实验结构 实验步骤 1. PC1 /PC2 配置ip /gateway 2. LSW4 新增两个VLAN e0/0/2 - e0/0/3 设置为access类型 加入到不同的vlan e0/0/1 设置为trunk类型 允许所有tag经过 3. LSW3 新增两个VLAN g0/0/1 设置为trunk 允许所有tag经过…

Http Https TCP/IP理解

一、 TCP Http Https UDP IP 介绍TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff09;是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议&#xff0c;而是指一个由FTP、SM…

[数据结构基础]树和二叉树的概念、结构及性质

目录 一. 树 1.1 树的概念及结构 1.2 树和树的节点的相关概念 1.3 定义树的四种方式 1.3.1 说明了树的度为N 1.3.2 采用顺序表的方式存储子节点 1.3.3 采用结构体数组进行存储 1.3.4 左孩子右兄弟表示法&#xff08;最优&#xff09; 二. 二叉树 2.1 二叉树的概念及结…

完爆90%的性能毛病,数据库优化八大通用绝招

毫不夸张的说咱们后端工程师&#xff0c;无论在哪家公司&#xff0c;呆在哪个团队&#xff0c;做哪个系统&#xff0c;遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论&#xff0c;能让大家快速、准确的去选择出合适的优化方案&#xff0c;我相信…

9.JS-作用域-预解析

1.作用域 代码名字&#xff08;变量&#xff09;在某个范围内起作用和效果&#xff0c;目的是为了提高程序的可靠性&#xff0c;减少命名冲突 2.js作用域的分类&#xff08;es6之前&#xff09; 全局作用域和局部作用域 全局作用域&#xff1a;整个script标签或者是一个单独…

【数据结构与算法——C语言版】2. 数组

前言 本篇文章介绍了数组的基础定义及使用&#xff0c;并针对数组的基本增删改查做了一些代码示例&#xff0c;下篇文章将讲解基于数组的更高效的方法&#xff0c;比如二分查找、插入排序等。 数组基础 数组定义 int nums[10] {0};如上&#xff0c;定义一个int类型的数组&…

【Python百日进阶-数据分析】Day146 - plotly小提琴图:px.violin()/go.violin()

文章目录四、实例4.1 Plotly Express 的小提琴图4.1.1 Plotly Express 的基本小提琴图4.1.2 带框和数据点的小提琴图4.1.3 多个小提琴图4.1.4 叠加的小提琴图4.2 graph_objects的小提琴图4.2.1 基本小提琴图4.2.2 多条小提琴迹线4.2.3 分组小提琴图4.2.4 分裂小提琴图4.2.5 高级…

植物大战僵尸:寻找召唤僵尸关键CALL

通过遍历寻找召唤僵尸的CALL&#xff0c;通过调用CALL出现自定义的僵尸&#xff0c;加速僵尸的出现。我们可以通过僵尸出现在屏幕中的个数来遍历寻找僵尸出现的CALL 僵尸CALL的遍历技巧&#xff1a;首先打开CE->进入游戏开始新的游戏-> 直接搜索未知初始化数据等待出现第…

新手程序员入职新公司,该如何快速上手?

小C今天又来找我了&#xff0c;一脸不开心的样子&#xff0c;我心想不是刚被开除&#xff0c;不会这么快又被开除了吧。 小C对我说&#xff1a;下周马上要入职新公司了。 我&#xff1a;好事啊&#xff0c;怎么一脸不开心的。 小C&#xff1a;马上要入职新公司了&#xff0c…