MySQL数据库技术(27)[MySQL防范]
本文“MySQL数据库技术(27)[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
? 5.1 MySQL 可用的API
? ? 为了便利利用程序的开辟,MySQL 供应了用C 编程语言编写的客户机库,它答应从任何C 程序的内部拜候MySQL 数据库.客户机库实现利用程序编程接口( A P I),API 定义客户机程序若何成立和履行与服务器的通信.
? ? 但是,利用C 来编写MySQL 程序并不受限制.很多其他语言处理器本身也是由C 编写的,或具有利用C库的本领,所以MySQL 客户机库供应了这个办法,由此, MySQL 对这些语言的约束可以成立在C API 的上面.这就为与MySQL 服务器通信而编写利用程序供应了很多挑选.客户机程序的API 是用Perl、PHP、Java、Python、C++、Tcl 和其他一些语言编写的.有关最新的清单,请查看MySQL 参考指南或MySQL Web 站点,因为有时会增添用新语言编写的A P I.
? ? 每种语言约束都定义自己的接口,分外是拜候MySQL 的法则.这里没有充足的时间来谈论MySQL 可以利用的每种A P I,我们只报告最风行的三种:
? ? ■ C 客户机库A P I.这是MySQL 的基本编程接口.
? ? ■ Perl 通用目标脚本语言的D B I(数据库接口) A P I.DBI 是作为与其他模块在D B D(数据库驱动程序)级接口的Perl 模块来实现的,每个模块都供应对特定范例的数据库引擎的拜候(当然,我们将谈论的特定的DBD 模块也供应对MySQL 的支持).DBI 对MySQL 的最广泛用法是编写由号令行来调用的独立的客户机,以及试图由Web 服务器调用的脚本来供应Web 对MySQL 的拜候.
? ? ■ PHP API.PHP 是一种脚本语言,它供应了在Web 页中嵌入程序的一种便利的办法.在发送从前,这样的页面由P H P来处理,它答应这些脚本生成动态的内容,如在页面中包含MySQL 查询的后果."P H P"原始的意思是个人主页( Personal Home Page),但是PHP 的生长已经远远超越它简单的原始功效.PHP Web 站点目前利用的这个名称表示"P H P:超文本预处理程序( Hypertext Preprocessor)",它像GNU (是GUN而不是Unix )一样以一样的方法自我引用.
? ? 利用他人成果
? ? 当尺度的M y S Q L客户机不能满意需求时,您并不老是需求编写自己的程序.其他一些人一向编写程序,而这些程序中有很多是可同享得到的.请参阅附录I 中的一些样例.只要找到几个就可以节俭您的很多工作.
? ? 以上这三种A P I都有专门章节具体阐明.本章只供应对API 对比的概述,用来阐明它们的基本特点,并给出对特定的利用程序大概挑选某个而不是其他API 的缘由.
? ? 当然,没必要只考虑某个API,应理解每个API,并用可以明智挑选合适自己的API.在包含若干组件的大项目中,大概利用多个API,多种语言,这取决于每个子任务合适哪一种语言.
? ? 关于试牟利用的任何一种API,假如需求得到必须的软件,请参阅附录A.
? ? 5.1.1 C API
? ? CAPI 用于编译C 程序上下文环境内部.它是一种客户机库,供应可用来与MySQL服务器对话的最初级别的接口——具有成立与服务器通信所需的本领.DBI 和PHP 的前身DBI 的Perl 前身是Mysqlperl 模块M y s q l . p m.这个模块不再被支持,并且不该该用于新的MySQL 的开辟.有一件事需求懂得,Mysqlperl 是依靠于MySQL 的,但DBI 不是.假如编写MySQL 的Perl 利用程序,然后,决意想用别的一种数据库引擎来利用它们,则移植DBI 脚本比Mysqlperl 脚本更简单一些,因为它们很少依靠于特定的数据库引擎.
假如获得了拜候MySQL 的一段Perl 脚本,并发现它是用Mysqlperl 而不是DBI 编写的,则仍旧可以利用D B I.DBI 包含了对Mysqlperl 的仿真支持,因此不需求安装两个程序包.PHP 3 的前身是PHP/FI 2.0 (F I代表" form interpreter ,即格局注释程序").像Mysqlperl 一样,P H P / F I也是过期的,所以我们就不再进一步谈论它了.
??MySQL C API 的发源假如已经有编写mSQL RDBMS 程序的经验,那么将注意到MySQL C API 近似于mSQL 呼应的C API.当MySQL 的开辟者们开始实现他们的SQL 引擎时,很多有效的同享实用程序可用于m S Q L.要想耗费最小的难度将那些mSQL 实用程序移植为MySQL 的
实用程序是大概的,可有意地将MySQL API计划为与mSQL API 近似(MySQL 乃至带有与mSQL API 函数名称呼应的MySQL 名称的简单的文本替换品的msql2mysql 脚本.这个操作相对烦琐,实际上也照护了很多触及为利用MySQL 而转换mSQL 程序的工作).
? ? MySQL 分发包供应的C 客户机是基于这个API 的.C 客户机库也作为MySQL 对其他语言约束的底子来供应服务,但Java API 是一个例外.比方,通过衔接MySQL C 客户机库代码(这个历程在附录A中通过DBI 和PHP 安装指导来举例阐明),M y S Q L可用Perl DBI 模块专有的MySQL 驱动程序和PHP 代码.
? ? 5.1.2 Perl DBI API
? ? DBI API 用于Perl 脚本语言编写的利用程序的上下文环境内部.这种API 在我们考虑的这三种API 构造中是最高的,因为它可与许大都据库工作,而同时在脚本中可忽视很多特定数据库的细节.DBI 经过利用两级构造的Perl 模块来实现(请参阅图5 - 1):
? ? ■ DBI (数据库接口)级.为客户机脚本供应接口.这个级别供应的是抽象接口,并非指特定数据库引擎.
? ? ■ DBD (数据库驱动器)级.在这个级别由特定引擎的驱动程序来供应对各种数据库引擎的支持.
? ? MySQL 对DBI 的支持环境由Msql - Mysql - modules分发包供应.这个模块在DBD 级操作.可以从分发包名称及图5 - 1中辨别它,一个驱动程序可以供应对一个以上的RDBMS 的支持.Msql-Mysql-Modules 最初是为mSQL 而编写的,后来扩大到M y S Q L.这种影响近似于对mSQL 和MySQL 的CAPI.由于计划的MySQL CAPI 近似于mSQL CAPI,所以将mSQL DBD(利用mSQL C API)扩大到对MySQL 的利用很有意义.
? ? DBI 体系构造编写利用程序的气势相对普通.当编写DBI 脚本时,可以利用一组尺度的调用.DBI 级在DBD 级调用得当的驱动程序来处理恳求,关于想利用的特定数据库服务器通信中包含的特定问题,由驱动程序处理.DBD 级传送从服务器返回的数据,备份到DBI 级,使
数据呈目前利用程序中.数据的格局与数据库的数据根源一致.
? ? 后来果得到这样一个接口,该接口从利用程序的编写者的概念躲藏了数据库引擎之间的差别,这样可以利用多种差别的引擎——和驱动程序一样多.DBI 通过答应以统一气势拜候每个数据库来供应一致性客户接口以增添可移植性.
? ? 当翻开数据库时,呈现由脚本编写的数据库专有的界面.当成立衔接时,应指出利用哪个驱动程序.比方,要想利用MySQL 数据库,应这样衔接:
? ? 而要想利用Postgres 或m S Q L,应这样衔接:
? ? 衔接今后,对该驱动程序不需求再做任何做特别的引用.让DBI 和该驱动程序办理数据库专有的细节.
? ? 无论若何这都是理论问题.但是,至少有两个因素与DBI 脚本的可移植性冲突:
? ? ■ 在RDBMS 引擎之间SQL 的实现差别,为一个引擎编写的SQL 另一个引擎根本不睬解是完好大概的.假如SQL 相当通用,则脚本可在引擎之间作呼应的移植.但假如SQL 依靠于引擎,则脚本也是这样.比方,假如利用MySQL 指定的SHOW TABLES语句,则该脚本不能用其他数据库履行.
? ? ■ DBD 模块普通供应引擎专有范例的信息来答应脚本编写者利用特定数据库系统的特定功效.比方, MySQL DBD 供应拜候查询后果中列属性的办法,如每列的最大长度、列能否是数值型的,等等.而这些属性在其他数据库中没有任何类似物.DBD 专有的特点与可移植性相背,通过利用它们,将MySQL 编写的脚本用于其他数据库系统是艰难的(但是,在第7章中,您将发现,笔者毫不吃力地避免了由MySQL DBD 供应的MySQL 专有的构造.那是因为您应当知道那些构造是什么,以便可以决意自己能否利用它们).
? ? 固然存在数据库专有脚本的这两个因素,但以抽象方法供应数据库拜候的DBI 机制是完成可移植性的公道方法,只要您决意操纵它多少次便可.
? ? 5.1.3 PHP API
? ? 像Perl 一样,PHP 也是一种脚本语言.但它与Perl 差别,PHP 很少作为通用目标语言来计划,而是作为编写Web 利用程序的一种语言.PHP API 主要作为在Web 页面中嵌入可履行脚本的一种办法来利用.这使Web 的开辟者们很简单用动态生成上下文环境来编写页面.
当客户浏览器向Web 服务器发送PHP 页面的恳求时,PHP 履行在该页面中它所发现的任何脚本,并用脚本的输出来替换它.该后果再送回浏览器.这就使浏览器中实际呈现的页面按照恳求的页面环境的差别而有所差别.比方,当在Web 页面中嵌入下面简短的PHP 脚本时,它呈现所恳求页面的主机I P地址:
? ? 可以利用脚本为拜候者供应基于数据库上下文环境的最新信息.下面的样例阐明可用于Historical League Web 站点的一个简单脚本.该脚本公布一个恳求来肯定当前的League 的成员数目,并将该数目报告给拜候该站点的人(假如呈现错误,则该脚本不报告任何数目):
? ? DBI和DBD的含义
? ? 固然DBI 级是独立于数据库的,而DBD 级是依靠于数据库的,但那并非" DBI"和"DBD"所代表的意义.它们的意思是"数据库接口"和"数据库驱动程序".
? ? PHP 脚本普通看起来像是带有嵌入在" "标识符中的脚本的HTML 页面.一个页面大概包含若干个脚本.这为脚本的开辟供应了一种非常机动的办法.比方,假如您喜好,可以编写一个正常的HTML 页面来成立通用的页面框架,然后再增添脚本的内
容.
? ? 关于差别的数据库引擎,PHP 对统一的接口不再作任何事情, DBI 也用这种办法.取而代之,每个引擎的接口看起来非常像呼应的实现该引擎初级API 的C 库接口.比方,用于从PHP 脚本内部拜候MySQL 的PHP 函数的名称非常近似于MySQL C 客户库中函数的名称.
以上是“MySQL数据库技术(27)[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |