怎么理解MySQL的API接口

技术怎么理解MySQL的API接口这篇文章给大家介绍怎么理解MySQL的API接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL 的 API 接口为了方便应用程序的开发,MySQL 提供了

本文向您介绍如何理解MySQL API接口。内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

MySQL的API接口

为了方便应用程序开发,MySQL提供了一个用C编程语言编写的客户端库,允许从任何C程序内部访问MySQL数据库。客户端库实现了应用程序编程接口,该接口定义了客户端程序如何建立和执行与服务器的通信。

但是,使用C语言编写MySQL程序不受限制。其他很多语言处理器都是用C写的,或者有能力使用C库,所以MySQL客户端库提供了这个方法,所以MySQL对这些语言的约束可以基于C API。这为编写与MySQL服务器通信的应用程序提供了许多选项。客户端程序的API是用Perl、PHP、Java、Python、C、Tcl等语言编写的。

每种语言约束都定义了自己的接口,尤其是访问MySQL的规则。这里没有足够的时间讨论MySQL可以使用的每一个API。我们只谈论三个最受欢迎的:

C客户端库API。这是MySQL的基本编程接口。

Perl通用目标脚本语言的DBI(数据库接口)API。DBI被实现为一个Perl模块,它与DBD(数据库驱动程序)级别的其他模块接口。每个模块都提供对特定类型的数据库引擎的访问(当然,我们将讨论的特定DBD模块也提供对MySQL的支持)。MySQL最常见的DBI用法是编写一个由命令行调用的独立客户端,并尝试通过Web服务器调用脚本来提供对MySQL的Web访问。

PHP API .PHP是一种脚本语言,它提供了一种在网页中嵌入程序的便捷方式。在发送之前,此类页面由PHP处理,PHP允许这些脚本生成动态内容,例如在页面中包含MySQL查询的结果。“PHP”最初是指个人主页,但PHP的发展已经远远超过了它简单的原始功能。PHP网站现在使用的名称是“PHP:超文本预处理器”,它引用自己的方式与GNU (GUN而不是UNIX)相同。

当标准的MySQL客户端不能满足需求时,您并不总是需要编写自己的程序。其他人一直在编写程序,这些程序中有许多是可以共享的。随便找几个就能省下你不少活。

这三个API都有专门的章节来详细讲解。本章仅提供API比较的概述,用于解释它们的基本特征,并给出特定应用程序可能选择一个API而不是另一个API的原因。

当然,你不必只考虑一个API。你应该了解每个应用编程接口,明智地选择适合你的应用编程接口。在包含多个组件的大型项目中,可能会使用多种API和多种语言,这取决于每个子任务适合哪种语言。

CAPI是用来编译C程序的上下文环境。它是一个客户端库,提供最底层的接口——,可以用来和MySQL服务器对话。它能够与服务器建立通信。DBI和PHP的前身DBI的Perl前身是Mysqlperl模块Mysql.pm这个模块不再被支持,不应该用于新Mysql的开发。有一点需要理解的是,Mysqlperl依赖于MySQL,但DBI不是。如果您编写Mysqlperl应用程序,然后决定将它们用于另一个数据库引擎,移植DBI脚本比MySQL Perl脚本更容易,因为它们很少依赖于特定的数据库引擎。

如果你得到一个Perl脚本来访问MySQL,并且发现它是用Mysqlperl而不是DBI写的,你仍然可以使用DBI。DBI包括对Mysqlperl的仿真支持,所以不需要安装两个包。PHP3的前身是PHP/FI 2.0 (FI代表“表单解释器”)。和Mysqlperl一样,PHP/FI也已经过时了,我们就不进一步讨论了。

MySQL C API的由来如果你有编写mSQL RDBMS程序的经验,你会注意到MyqlC API与mSQL对应的C API类似。当MySQL开发人员开始实现他们的SQL引擎时,许多有用的共享实用程序都可以用于mSQL。可以以最小的难度将那些mSQL实用程序移植到mysql实用程序中,并且MySQLAPI可以被有意设计为类似于mSQL API的msql2mysql脚本(MySQL甚至有一个简单的文本替代对应于mSQL API函数名的MySQL名称)。这个操作相对来说比较繁琐,实际上要照顾到转换mSQL程序使用MySQL所涉及的大量工作)。

MySQL发行包提供的C客户端就是基于这个API。c客户端库也是MySQL约束其他语言的基础,但Java API是个例外。例如,MySQL可以通过连接MySQL客户端库代码来使用MySQL专有的Perl DBI模块。

QL驱动程序和 PHP 代码。

   Perl DBI APIDBI API 用于 Perl 脚本语言编写的应用程序的上下文环境内部。这种 API 在我们考虑的这三种 API 结构中是最高的,因为它可与许多数据库工作,而同时在脚本中可忽略许多特定数据库的细节。DBI 经过使用两级结构的 Perl 模块来实现。

  ■ DBI (数据库接口)级。为客户机脚本提供接口。这个级别提供的是抽象接口,并不是指特定数据库引擎。

  ■ DBD (数据库驱动器)级。在这个级别由特定引擎的驱动程序来提供对各种数据库引擎的支持。

  MySQL 对 DBI 的支持环境由 Msql - Mysql - modules 分发包提供。这个模块在DBD 级操作。可以从分发包名称中分辨它,一个驱动程序可以提供对一个以上的RDBMS 的支持。Msql-Mysql-Modules 最初是为mSQL 而编写的,后来扩展到MySQL。这种影响类似于对 mSQL 和 MySQL 的 CAPI。由于设计的 MySQLCAPI 类似于 mSQL CAPI,所以将 mSQL DBD(使用 mSQL C API)扩展到对MySQL的使用很有意义。

  DBI 体系结构编写应用程序的风格相对普通。当编写 DBI 脚本时,可使用一组标准的调用。DBI 级在 DBD 级调用适当的驱动程序来处理请求,对于想使用的特定数据库服务器通信中包括的特定问题,由驱动程序处理。DBD 级传送从服务器返回的数据,备份到 DBI 级,使数据出现在应用程序中。数据的格式与数据库的数据来源一致。

  其结果得到这样一个接口,该接口从应用程序的编写者的观点隐藏了数据库引擎之间的差异,这样可使用多种不同的引擎——和驱动程序一样多。DBI 通过允许以统一风格访问每个数据库来提供一致性客户接口以增加可移植性。

  当打开数据库时,出现由脚本编写的数据库专有的界面。当创建连接时,应指出使用哪个驱动程序。

  连接以后,对该驱动程序不需要再做任何做特殊的引用。让 DBI 和该驱动程序解决数据库专有的细节。
无论如何这都是理论问题。然而,至少有两个因素与 DBI 脚本的可移植性矛盾:

  ■ 在RDBMS 引擎之间 SQL 的实现不同,为一个引擎编写的 SQL 另一个引擎根本不理解是完全可能的。如果 SQL 相当通用,则脚本可在引擎之间作相应的移植。但如果 SQL 依赖于引擎,则脚本也是这样。例如,如果使用 MySQL 指定的 SHOW TABLES 语句,则该脚本不能用其他数据库执行。

  ■ DBD 模块通常提供引擎专有类型的信息来允许脚本编写者使用特定数据库系统的特定功能。例如, MySQLDBD 提供访问查询结果中列属性的方法,如每列的最大长度、列是否是数值型的,等等。而这些属性在其他数据库中没有任何相似物。DBD 专有的特性与可移植性相背,通过使用它们,将 MySQL 编写的脚本用于其他数据库系统是困难的。

  尽管存在数据库专有脚本的这两个因素,但以抽象方式提供数据库访问的 DBI 机制是完成可移植性的合理方式,只要您决定利用它多少次即可。

  像 Perl 一样,PHP 也是一种脚本语言。但它与Perl 不同,PHP 很少作为通用目标语言来设计,而是作为编写 Web 应用程序的一种语言。PHP API 主要作为在 Web 页面中嵌入可执行脚本的一种方法来使用。这使Web 的开发者们很容易用动态生成上下文环境来编写页面。

  当客户浏览器向 Web 服务器发送 PHP 页面的请求时,PHP 执行在该页面中它所发现的任何脚本,并用脚本的输出来替换它。该结果再送回浏览器。这就使浏览器中实际出现的页面根据请求的页面环境的不同而有所不同。例如,当在 Web 页面中嵌入下面简短的 PHP 脚本时,它出现所请求页面的主机 IP 地址:

  可以使用脚本为访问者提供基于数据库上下文环境的最新信息。下面的样例说明可用于 Historical League Web 站点的一个简单脚本。该脚本发布一个请求来确定当前的 League 的成员数目,并将该数目报告给访问该站点的人(如果出现错误,则该脚本不报告任何数目):

  尽管 DBI 级是独立于数据库的,而 DBD 级是依赖于数据库的,但那并不是“ DBI”和“DBD”所代表的意义。它们的意思是“数据库接口”和“数据库驱动程序”。

  PHP 脚本通常看起来像是带有嵌入在“ ”标识符中的脚本的 HTML 页面。一个页面可能包括若干个脚本。这为脚本的开发提供了一种非常灵活的方法。例如,如果您喜欢,可以编写一个正常的 HTML 页面来创建通用的页面框架,然后再增加脚本的内容。

  对于不同的数据库引擎,PHP 对统一的接口不再作任何事情, DBI 也用这种方法。取而代之,每个引擎的接口看起来非常像相应的实现该引擎低级 API 的 C 库接口。例如,用于从 PHP 脚本内部访问 MySQL 的PHP 函数的名称非常类似于 MySQL C 客户库中函数的名称。

关于怎么理解MySQL的API接口就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/98514.html

(0)

相关推荐

  • Oracle索引范围扫描操作流程是什么

    技术Oracle索引范围扫描操作流程是什么本篇内容主要讲解“Oracle索引范围扫描操作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle索引范围扫描操作流

    攻略 2021年11月4日
  • ABAP如何显示表字段和描述

    技术ABAP如何显示表字段和描述这篇文章将为大家详细讲解有关ABAP如何显示表字段和描述,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。显示表字段和描述REPORT ZWT.TABLES

    攻略 2021年11月18日
  • 长发发型扎法100种图片,女孩子的长头发怎么扎好看

    技术长发发型扎法100种图片,女孩子的长头发怎么扎好看发型一长发发型扎法100种图片:高马尾。马尾对头发的长度是没有限制的,只要是中长发以上都可以扎,而且高马尾也比较利落、活泼又很减龄,各种场合扎都合适。发型二:花苞头。

    生活 2021年11月1日
  • 如何进行C++运行机制的介绍

    技术如何进行C++运行机制的介绍这期内容当中小编将会给大家带来有关如何进行C++运行机制的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++编程语言是一款应用广泛,功能强大的编程

    攻略 2021年10月27日
  • jmeter使用方法(jmeter基本使用教程)

    技术jmeter基本使用方法是什么这篇文章主要介绍“jmeter基本使用方法是什么”,在日常操作中,相信很多人在jmeter基本使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年12月18日
  • mysql中转换函数以及排序问题的示例分析

    技术mysql中转换函数以及排序问题的示例分析这篇文章主要为大家展示了“mysql中转换函数以及排序问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中转

    攻略 2021年11月6日