為了方便應(yīng)用程序的開發(fā),MySQL提供了用C 編程語(yǔ)言編寫的客戶機(jī)庫(kù),它允許從任何C 程序的內(nèi)部訪問MySQL數(shù)據(jù)庫(kù)。客戶機(jī)庫(kù)實(shí)現(xiàn)應(yīng)用程序編程接口( A P I),API 定義客戶機(jī)程序如何建立和執(zhí)行與服務(wù)器的通信。
然而,使用C 來(lái)編寫MySQL程序并不受限制。許多其他語(yǔ)言處理器本身也是由C 編寫的,或具有使用C庫(kù)的能力,所以MySQL客戶機(jī)庫(kù)提供了這個(gè)方法,由此, MySQL對(duì)這些語(yǔ)言的約束可以建立在C API 的上面。這就為與MySQL服務(wù)器通信而編寫應(yīng)用程序提供了許多選擇。客戶機(jī)程序的API 是用Perl、PHP、Java、Python、C++、Tcl 和其他一些語(yǔ)言編寫的。有關(guān)最新的清單,請(qǐng)查看MySQL參考指南或MySQLWeb 站點(diǎn),因?yàn)橛袝r(shí)會(huì)增加用新語(yǔ)言編寫的A P I。
每種語(yǔ)言約束都定義自己的接口,特別是訪問MySQL的規(guī)則。這里沒有足夠的時(shí)間來(lái)討論MySQL可使用的每種A P I,我們只講述最流行的三種:
■ C 客戶機(jī)庫(kù)A P I。這是MySQL的基本編程接口。
■ Perl 通用目標(biāo)腳本語(yǔ)言的DBI(數(shù)據(jù)庫(kù)接口) A P I。DBI 是作為與其他模塊在DB D(數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序)級(jí)接口的Perl 模塊來(lái)實(shí)現(xiàn)的,每個(gè)模塊都提供對(duì)特定類型的數(shù)據(jù)庫(kù)引擎的訪問(當(dāng)然,我們將討論的特定的DBD 模塊也提供對(duì)MySQL的支持)。DBI 對(duì)MySQL的最普遍用法是編寫由命令行來(lái)調(diào)用的獨(dú)立的客戶機(jī),以及試圖由Web 服務(wù)器調(diào)用的腳本來(lái)提供Web 對(duì)MySQL的訪問。
■ PHP API。PHP 是一種腳本語(yǔ)言,它提供了在Web 頁(yè)中嵌入程序的一種便利的方法。在發(fā)送以前,這樣的頁(yè)面由PHP來(lái)處理,它允許這些腳本生成動(dòng)態(tài)的內(nèi)容,如在頁(yè)面中包括MySQL查詢的結(jié)果。“PHP”原始的意思是個(gè)人主頁(yè)( Personal Home Page),但是PHP 的成長(zhǎng)已經(jīng)遠(yuǎn)遠(yuǎn)超過它簡(jiǎn)單的原始功能。PHP Web 站點(diǎn)現(xiàn)在使用的這個(gè)名稱表示“PHP:超文本預(yù)處理程序( Hypertext Preprocessor)”,它像GNU (是GUN而不是UNIX )一樣以同樣的方式自我引用。
使用他人成果
當(dāng)標(biāo)準(zhǔn)的MySQL客戶機(jī)不能滿足需要時(shí),您并不總是需要編寫自己的程序。其他一些人一直編寫程序,而這些程序中有許多是可共享得到的。請(qǐng)參閱附錄I 中的一些樣例。只要找到幾個(gè)就能節(jié)省您的許多工作。
以上這三種A P I都有專門章節(jié)詳細(xì)說(shuō)明。本章只提供對(duì)API 比較的概述,用來(lái)說(shuō)明它們的基本特征,并給出對(duì)特定的應(yīng)用程序可能選擇某個(gè)而不是其他API 的原因。
當(dāng)然,不必只考慮某個(gè)API,應(yīng)了解每個(gè)API,并用可以明智選擇適合自己的API。在包括若干組件的大項(xiàng)目中,可能使用多個(gè)API,多種語(yǔ)言,這取決于每個(gè)子任務(wù)適合哪一種語(yǔ)言。
對(duì)于試圖使用的任何一種API,如果需要得到必需的軟件,請(qǐng)參閱附錄A。
5.1.1C API
CAPI 用于編譯C 程序上下文環(huán)境內(nèi)部。它是一種客戶機(jī)庫(kù),提供可用來(lái)與MySQL服務(wù)器對(duì)話的最低級(jí)別的接口――具有創(chuàng)建與服務(wù)器通信所需的能力。DBI 和PHP 的前身DBI 的Perl 前身是Mysqlperl 模塊M y s q l . p m。這個(gè)模塊不再被支持,而且不應(yīng)該用于新的MySQL的開發(fā)。有一件事需要明白,Mysqlperl 是依賴于MySQL的,但DBI 不是。如果編寫MySQL的Perl 應(yīng)用程序,然后,決定想用另外一種數(shù)據(jù)庫(kù)引擎來(lái)使用它們,則移植DBI 腳本比Mysqlperl 腳本更容易一些,因?yàn)樗鼈兒苌僖蕾囉谔囟ǖ臄?shù)據(jù)庫(kù)引擎。如果獲取了訪問MySQL的一段Perl 腳本,并發(fā)現(xiàn)它是用Mysqlperl 而不是DBI 編寫的,則仍然可以使用DBI。DBI 包括了對(duì)Mysqlperl 的仿真支持,因此不需要安裝兩個(gè)程序包。PHP 3 的前身是PHP/FI 2.0 (F I代表“ form interpreter ,即格式解釋程序”)。像Mysqlperl 一樣,PHP / F I也是過時(shí)的,所以我們就不再進(jìn)一步討論它了。
MySQLC API 的起源如果已經(jīng)有編寫mSQL RDBMS 程序的經(jīng)驗(yàn),那么將注意到MySQLC API 類似于mSQL 相應(yīng)的C API。當(dāng)MySQL的開發(fā)者們開始實(shí)現(xiàn)他們的SQL 引擎時(shí),許多有用的共享實(shí)用程序可用于m SQL。要想花費(fèi)最小的難度將那些mSQL 實(shí)用程序移植為MySQL的
實(shí)用程序是可能的,可有意地將MySQLAPI設(shè)計(jì)為與mSQL API 類似(MySQL甚至帶有與mSQL API 函數(shù)名稱相應(yīng)的MySQL名稱的簡(jiǎn)單的文本替代品的msql2mysql腳本。這個(gè)操作相對(duì)煩瑣,實(shí)際上也照顧了許多涉及為使用MySQL而轉(zhuǎn)換mSQL 程序的工作)。
MySQL分發(fā)包提供的C 客戶機(jī)是基于這個(gè)API 的。C 客戶機(jī)庫(kù)也作為MySQL對(duì)其他語(yǔ)言約束的基礎(chǔ)來(lái)提供服務(wù),但Java API 是一個(gè)例外。例如,通過連接MySQLC 客戶機(jī)庫(kù)代碼(這個(gè)過程在附錄A中通過DBI 和PHP 安裝指導(dǎo)來(lái)舉例說(shuō)明),MySQL可用Perl DBI 模塊專有的MySQL驅(qū)動(dòng)程序和PHP 代碼。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com