返回介绍

1.5 数据库接口

发布于 2024-09-26 01:06:05 字数 6545 浏览 0 评论 0 收藏 0

表格 各种数据库接口规范比较

 简介详述特点
ODBCOpen Database Connectivity开放数据库连接。Microsoft 为解决异构数据库间的数据共享而产生的,现已成为 WOSA(The Windows Open System Arhitecture, Windows 开放系统体系结构) 的主要部分和基于 Windows 环境的一种数据库访问接口标准用 ODBC 可以访问各类计算机上的 DB 文件,甚至访问如 Excel 表和 ASCI I 数据文件这类非数据库对象。
JDBCJava DataBase Connectivity, Java 数据库连接JDBC 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言 编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序JDBC 建立在 ODBC,保留了 ODBC 的基本设计特征。 JDBC 以 Java 风格与优点为基础并进行优化,因此更加易于使用 。
RDORemote Data Objects,远程数据对象RDO 已经发展到微软为新的程序推荐的 程序接口 ---ADO~ ActiveX 数据对象已被 ADO 取代。
ADOActiveX Data ObjectsActiveX 数据对象 。Microsoft 提出的应用程序接口( API )用以实现访问关系或非关系数据库中的数据。ADO 是一种 面向对象编程接口 ,高层的对 OLE DB 的 Automation 封装接口。 
OLE DBObject Link and embed,对象连接与嵌入微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB 不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查询语言(SQL)能力,还具有面向其他非 SQL 数据类型 的通路。作为微软的 组件对象模型 (COM)的一种设计,OLE DB 是一组读写数据的方法(在过去可能被称为渠道)。OLE DB 将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。最主要三部分为数据提供者 Provider、数据服务提供者和服务组件。

备注: 1. 数据库接口一般有以下功能:与数据库建立连接、发送操作数据库的语句并处理结果。

  1. JDBC 和 ODBC。两种接口都基于 X/Open SQL CLI(调用级接口)。
  2. ODBC 和 OLE DB: ODBC 标准的对象是基于 SQL 的数据源(SQL-Based Data Source),而 OLE DB 的对象则是范围更为广泛的任何数据存储。从这个意义上说,符合 ODBC 标准的数据源是符合 OLE DB 标准的数据存储的子集。
  3. ORM-Object Relational Mapping,就是对象映射关系. ORM 框架实现的用途包括统一了数据库接口,各语言的 ORM 框架有: Python 是 SQLAlchemy, Java 是 Herbinate.

表格 JDBC 连接与 JNDI 连接对比

 JDBC 连接数据库JNDI 连接数据库
定义JDBC 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问JNDI (Java Naming and Directory Interface) 是一个应用程序设计的 API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似 JDBC,都是构建在抽象层上
连接方式区别JDBC 就是直接连接物理数据库,连接数据库比较快,但在程序中使用的话就比较烦琐,每次连接都要有一定的编码,和数据库的连接需要手动关闭使用 JNDI 连接某个数据源,此数据源所连接的数据库都在应用服务器端定义
各自优势在报表服务器部署后,如果数据库的相关参数变更,重新修改配置文件中的 JDBC 参数即可,只要保证数据源的名称不变,数据连接就无需修改;JDBC 避免了报表与数据库之间的紧耦合,和项目共用服务器的连接池,且连接速度比较快,使应用更加易于配置、易于部署JNDI 只需要把数据库后台、驱动、URL、用户名、连接池等问题交给 J2EE 容器来配置和管理,然后对这些配置和管理进行引用即可

表格 URI 比较

 URI备注
JDBCjdbc:driver://host:port/dbnamejdbc:是固定前缀串
SQLAlchemydialect[+driver]://user:password@host:port/dbname[?key=value&key=value...] 

备注: 若无特殊说明, URI 组成里的名词都为变量名。

1.5.1 ODBC

ODBC(开放式数据库连接性)为客户端程序提供了访问众多数据库或数据源的一种方式。ODBC 是标准化的 API,允许与 SQL 数据库服务器进行连 接。它是根据 SQL Access Group 的规范开发的,它定义了一套函数调用、错误代码和数据类型,可将其用于开发独立于数据库的应用程序。通常情况下,当需要数据库独立或需要同时访 问不同的数据源时,将用到 ODBC。

MyODBC

表格 8 MyODBC 版本

Connector/ODBC发布时间简介
MyODBC 2.50 32 位 ODBC 驱动程序,
MyODBC 3.51200532 位 ODBC 驱动程序,相比 2.50,功能有所增强。支持 ODBC 3.5x 规范层次 1(全部核心 API +层次 2 特性)
MyODBC 5.3 is suitable for MySQL Server versions between 4.1 and 5.7.
MyODBC 8 adds MySQL Server 8.0 support, including caching_sha2_password and the related GET_SERVER_PUBLIC_KEY connection attribute.

image-20191201160252714

图 3 Connector/ODBC Architecture Components

MyODBC 体系结构建立在 5 个组件上,

  • Application 应用程序: 应用程序指的是通过调用 ODBC API 来访问 MySQL 服务器上数据的程序。应用程序使用标准的 ODBC 调用与驱动管理器进行通信。应用程序不关心数据的存储位置,存储方式,甚至不关心 为访问数据而进行的系统配置方式。它仅需要知道数据源名(DSN)。对于使用 OBDC 的应用程序来说,其主要任务是提交 SQL 语句,并检索由这些语句生成 的结果。
  • Driver Manager 驱动管理器:驱动管理器是用于管理应用程序和驱动程序间通信的库。
  • Connector/ODBC Driver 驱动程序: 用于实施 ODBC API 所提供功能的库。它负责处理 ODBC 函数调用,将 SQL 请求提交给 MySQL 服务器,并将结果返回给应用程序。
  • DSN Configuration 配置:ODBC.INI 是 ODBC 配置文件,其中保存了连接到服务器所需的驱动信息和数据库信息。驱动管理器将使用它来确定加载哪个驱动程序(使用数据源名)。驱动程序将根据指定的 DSN 使用它来读取连接参数。
  • MySQL:MySQL 服务器是数据源。

1.5.2 JDBC

JDBC 是一种规范,它提供的接口,一套完整的,可移植的访问底层数据库的程序。

JDBC API 支持两层和三层处理模型进行数据库访问,但在一般的 JDBC 体系结构由两层组成:

image-20191201160309474

图 4 JDBC 结构图

说明:

  • JDBC API: 提供了应用程序对 JDBC 的管理连接。JDBC API 的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。

  • JDBC Driver API: 支持 JDBC 管理到驱动器连接。JDBC 驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。

JDBC API 提供了以下接口和类:

  • DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从 Java 应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别 JDBC 在一定子协议的第一个驱动器将被用来建立数据库连接。

  • Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用 DriverManager 中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息

  • Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。

  • Statement : 可以使用这个接口创建的对象的 SQL 语句提交到数据库。一些派生的接口接受除执行存储过程的参数。

  • ResultSet: 这些对象保存从数据库后,执行使用 Statement 对象的 SQL 查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。

  • SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文