软考笔记--数据库访问接口

数据库访问接口是指应用程序与数据库之间的连接部分。数据库访问接口的发展,对于数据库技术的发展与应用起到了非常重要的作用,它使应用程序与数据库之间的连接变得简单,使应用系统从一种数据库变换成另一种数据库时的修改工作量大大降低。常见的数据库访问接口有专用调用,开放数据库互连(Open Database Connectivity,ODBC)和Java数据库连接(JAVA database Connectivity,JDBC)等。

1.专用调用

数据库技术的发展,每种DBMS产生的数据库文件格式都不一样,操作方式也各有差异,通常有自己的一套数据库的操作语法,并为应用程序提供了数据库系统所独有的应用编程接口(Application Programming Interface,API)。这种方式的数据库访问接口称为专用调用。

专用调用的优点:执行率高,由于是专用,编程实现比较简单。缺点是:对程序员而言,专用调用并不是一件好事情,因为这使得程序员在编程中连接数据库的时候变得非常困难,对每一种数据库进行编程,就必须对该数据库的底层API有相当程序的了解。这意味着需要同时了解多种数据库的底层API,还不能搞混。

2.开放数据库互连

ODBC是Mircrosoft公司开放服务结构(Windows Open Services Architecture,WOSA)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API利用结构化查询语言(structured Query Language, SQL)来完成其大部分任务。ODBC本身也提供了对SQL的支持,用户可以直接将SQL语句送给ODBC。

一个基于ODBC的应用程序对数据库的操作不依赖与任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成,也就是说不论是SQL Server和Oracle等大型数据库,还是Access等桌面数据库,均可用ODBC API进行访问。在实际应用中,首先用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型和ODBC驱动程序等信息,建立起ODBC与具体数据库的联系;然后,在应用程序中向ODBC提供数据源名,就能建立起与相应数据库的连接。

ODBC的最大优点是能以统一的方式处理所有的数据库。其缺点也是非常明显的, 主要体现在以下三个方面:

(1) ODBC只支持关系型数据,像电子邮件之类的非关系型数据是不支持的。

( 2 )由ODBC最初的设计理念就是能够访问所有类型数据库,这种普遍适用也造 成ODBC对每种数据库的支持都不是特别理想。

( 3 )使ODBC需要进行一些系统的配置工作。当然,这个操作也是可以用程序来完成的。

3. Java数据库连接

Java 数据库连接(Java Dat aBase Connectivity, JDBC ) 的作用与ODBC是类似的,只不过JDBC 只能用在Java程序设计语言中。JDBC 是一种用于执行SQL语句的Java API ,可以为多种关系数据库提供统一访问,它由一组用JAVA语言编写的类和接口组成。

将 JAVA语言和JDBC 结合起来,程序员不必为不同的平台编写不同的应用程序,只须写—遍程序,就可以让它在任何平台上运行,这也是J a v a语言“编写一次,处处运行”的优势。

ODBC与JDBC 都 基 于 X / OpenSQL , JDBC 构建于ODBC之上,它保留ODBC 的基本设计特征,同时针对J a v a语言加以改进,所以能与J a v a开发进行很好的配合,而且保障了熟悉OD B C 的程序员可以快速地掌握J D B C 。此外,ODB C将简单和高级功能混在一起,而且即使对于简黾的查询,其选项也极为复杂。相反,JDBC尽量保证简单功能的简便性,而同时在必要时允许使用高级功能。 启用纯J a v a机制,则需要使用JDBC 。如果使用ODBC , 就必须手动地将ODBC 驱动程序管理器和驱动程序安装在每台客户机上;如果完全用JAVA 编 写JDBC驱动程序,则JDBC 代码在所有JAVA平台上都可以自动安装和移植,并保证安全性。

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

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

相关文章

【Vue3 + Vite】Vite搭建 项目解构 Vue快速学习 第一期

文章目录 Vue3介绍Vue3通过Vite实现工程化:一、Vite创建Vue3工程化项目1.1 ViteVue3项目的创建、启动、停止1.2 ViteVue3项目的目录结构 二、ViteVue3 项目组件(SFC入门)2.1 什么是VUE的组件 ?2.2 什么是.vue文件 ?2.3 工程化vue项目如何组织这些组件? 三、ViteV…

【NodeJS】004- NodeJS的模块化与包管理工具

模块化 1. 介绍 1.1.什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什么是模块化项目 ? 编码时是按照模…

23. 集合类

集合 1. 概述2. 分类2.1 单列集合(Collection)2.2 双列集合(Map) 单列集合 Collection、List、Set、ArrayList、LinkedList’、Vector、HashSet、TreeSet、LinkedHashSet双列集合 Map、HashTable、HashMap、TreeMap、Properties、…

docker 部署及命令

一、容器概述 1、为什么要用到容器? ①容器可以屏蔽底层操作系统的差异性,让业务应用不管在哪里都是使用容器的环境运行,从而保证开发测试环境与生产环境的一致性 ②容器部署起来非常便捷和迅速,缩短开发测试部署的周期时间 2…

Springboot最佳包结构

目录 概述 无默认package 入口类 包结构 概述 我们在构建Springboot项目的时候,我们可以很灵活的去管理我的们class,以及创建包结构,但是有一些原则我们要牢记在心。 无默认package Springboot中的一些注解例如ComponentScan&#xff…

《Python 简易速速上手小册》第10章:Python 项目实战(基于最新版 Python3.12 编写)

注意&#xff1a;本《Python 简易速速上手小册》 核心目的在于让零基础新手「快速构建 Python 知识体系」 文章目录 <mark >注意&#xff1a;本《Python 简易速速上手小册》<mark >核心目的在于让零基础新手「快速构建 Python 知识体系」 10.1 项目规划和结构10.1…

阅读go语言工具源码系列之gopacket(谷歌出品)----第二集 layers-巧妙的抽象与无聊的协议包

上一集中我们讲到了wpcap.dll的go封装方法&#xff0c;对于linux系统下libpcap的go封装采用的是常用的cgo方式&#xff0c;想了解的可以看看pcap文件夹中的pcap_unix.go。 我们得到了wpcap.dll的go调用&#xff0c;就可以利用它来进行列举所有网络设备&#xff0c;例如以下代码…

知识产权如何转为实缴资本,实操

网上已传疯了&#xff0c;相关部门要求企业注册资本认缴的必须在5年内完成实缴&#xff0c;这一下子引起企业老板们着急了。以前公司注册时&#xff0c;很多老板因为是认缴资本&#xff0c;完全凭脑袋一拍&#xff0c;写上注册资金5000万&#xff0c;有的甚至写上几个小目标。现…

11.Elasticsearch应用(十一)

Elasticsearch应用&#xff08;十一&#xff09; 1.什么是自动补全 现代的搜索引擎&#xff0c;一般都会提供Suggest as you type的功能 帮助用户在输入搜索的过程中&#xff0c;进行自动补全或者纠错。通过协助用户输入更加精准的关键词&#xff0c;提高后续搜索阶段文档的…

【GitHub项目推荐--开源翻译模型】【转载】

开源翻译模型 Seamless M4T 旨在提供高质量的翻译&#xff0c;使来自不同语言的人们能够轻松地通过语音和文本进行交流&#xff0c;支持 101 种语言用于语音输入、96 种文本语言输入/输出、 可以输出 35 种语音语言。 此统一模型支持多个任务&#xff0c;而不依赖于多个单独的…

2024.1.27 寒假训练记录(10)

下午训练赛的榜歪得吓人&#xff0c;来补一下题。 文章目录 CF 1646B Quality vs QuantityCF 1326C Permutation PartitionsCF 1355D Game With ArrayAT ARC99B Snuke NumbersAT exawizards2019C Snuke the WizardCF 1788F XOR, Tree, and Queries CF 1646B Quality vs Quantit…

漏洞原理反射型XSS漏洞

漏洞原理XSS漏洞 1 反射型XSS php基础链接 Web渗透编程语言基础-CSDN博客 正常思维 http://127.0.0.1/websec/day01/xss_reflect.php?name%E6%88%91%E6%98%AF%E8%B0%81 http://127.0.0.1/14_WEBSEC/DAY01/xss_reflect.php?name我是谁 黑客思维 http://127.0.0.1/websec…

centos 离线安装yum

1先找一套相同cpu的虚拟机下载rpm 2 如果新的虚拟机没有yum源就替换 修改yum源-CSDN博客 1.2使用wget下载yum源配置文件 (1)备份本地yum源配置文件 备份命令&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak(2)下载yum源配置文…

Unity 开发过程中如何优化内存

在开发Unity游戏时&#xff0c;优化内存使用是非常重要的。这不仅可以提高游戏性能&#xff0c;还能保证游戏在各种设备上都能顺利运行。以下是一些关于如何在Unity中优化内存使用的建议&#xff1a; 1. 了解并监控您的内存使用情况&#xff1a;您可以使用Unity的Profiler工具…

Qt Bezier闭合曲线插值(2D)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 标准的Bezier曲线拟合并不能穿过所有节点,这是由于其随着节点数量的增加,其多项式阶数也在增加,最终其形状也会越发复杂且难以控制。因此就有学者提出,使用三阶贝塞尔曲线分段去插值一条整体光滑的曲线,这样不…

echarts option series smooth

echarts option series smooth 平滑处理 smooth&#xff1a;0.3 echarts_04_line.html <!DOCTYPE html> <html lang"en"><head> <meta charset"utf-8"> <title></title> </head><body><div id&quo…

【Git版本控制】以及搭建gitlab服务

目录 一、Git介绍二、Git安装与全局配置1、git的全局配置&#xff1a;2、为常用的指令配置别名&#xff1a;3、Git初始化本地代码仓库4、Git的基础命令 三、分支四、Git远程仓库1、操作远程仓库2、从远程仓库克隆3、从远程仓库中抓取和拉取 五、Gitlab sever部署期间出现遇到的…

python爬虫demo——爬取历史平均房价

简单爬取历史房价 需求 爬取的网站汇聚数据的城市房价 https://fangjia.gotohui.com/ 功能 选择城市 https://fangjia.gotohui.com/fjdata-3 需要爬取年份的数据&#xff0c;等等 https://fangjia.gotohui.com/years/3/2018/ 使用bs4模块 使用bs4模块快速定义需要爬取的…

python asyncio异步编程

一、协程 协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 对于协程而言,并不是计算机所提供的,计算机所提供的只有进程和线程、而协程则是通过程序员人为所创造的。我们通常将协程称为微线…

javaScript的书写位置

javascript的书写位置有哪些呢&#xff1f;有什么注意事项吗&#xff1f;让我为大家介绍一下吧&#xff01; 1.内部 注意&#xff1a;书写位置尽量写到文档末尾</ body>的前面 在我们内部书写JS的时候 <!DOCTYPE html> <html lang"en"> <hea…