真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么理解MySQL的API接口

這篇文章給大家介紹怎么理解MySQL的API接口,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在黃岡等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設 網(wǎng)站設計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,網(wǎng)絡營銷推廣,外貿(mào)網(wǎng)站制作,黃岡網(wǎng)站建設費用合理。

MySQL 的 API 接口

為了方便應用程序的開發(fā),MySQL 提供了用 C 編程語言編寫的客戶機庫,它允許從任何 C 程序的內(nèi)部訪問 MySQL 數(shù)據(jù)庫??蛻魴C庫實現(xiàn)應用程序編程接口(API),API 定義客戶機程序如何建立和執(zhí)行與服務器的通信。
然而,使用 C 來編寫 MySQL 程序并不受限制。許多其他語言處理器本身也是由 C 編寫的,或具有使用 C 庫的能力,所以 MySQL 客戶機庫提供了這個方法,由此, MySQL 對這些語言的約束可以建立在 C API 的上面。這就為與 MySQL 服務器通信而編寫應用程序提供了許多選擇??蛻魴C程序的 API 是用 Perl、PHP、Java、Python、C++、Tcl 和其他一些語言編寫的。

每種語言約束都定義自己的接口,特別是訪問 MySQL 的規(guī)則。這里沒有足夠的時間來討論 MySQL 可使用的每種 API,我們只講述最流行的三種:

■ C 客戶機庫 API。這是 MySQL 的基本編程接口。

■ Perl 通用目標腳本語言的 DBI(數(shù)據(jù)庫接口)API。DBI 是作為與其他模塊在 DBD(數(shù)據(jù)庫驅(qū)動程序)級接口的 Perl 模塊來實現(xiàn)的,每個模塊都提供對特定類型的數(shù)據(jù)庫引擎的訪問(當然,我們將討論的特定的 DBD 模塊也提供對 MySQL 的支持)。DBI 對 MySQL 的最普遍用法是編寫由命令行來調(diào)用的獨立的客戶機,以及試圖由 Web 服務器調(diào)用的腳本來提供 Web 對 MySQL 的訪問。

■ PHP API。PHP 是一種腳本語言,它提供了在 Web 頁中嵌入程序的一種便利的方法。在發(fā)送以前,這樣的頁面由 PHP 來處理,它允許這些腳本生成動態(tài)的內(nèi)容,如在頁面中包括 MySQL 查詢的結果?!癙HP” 原始的意思是個人主頁( Personal Home Page),但是 PHP 的成長已經(jīng)遠遠超過它簡單的原始功能。PHP Web 站點現(xiàn)在使用的這個名稱表示“PHP:超文本預處理程序( Hypertext Preprocessor)”,它像 GNU(是 GUN 而不是 UNIX )一樣以同樣的方式自我引用。

當標準的 MySQL 客戶機不能滿足需要時,您并不總是需要編寫自己的程序。其他一些人一直編寫程序,而這些程序中有許多是可共享得到的。只要找到幾個就能節(jié)省您的許多工作。

以上這三種 API 都有專門章節(jié)詳細說明。本章只提供對 API 比較的概述,用來說明它們的基本特征,并給出對特定的應用程序可能選擇某個而不是其他 API 的原因。

當然,不必只考慮某個 API,應了解每個 API,并用可以明智選擇適合自己的 API。在包括若干組件的大項目中,可能使用多個 API,多種語言,這取決于每個子任務適合哪一種語言。

CAPI 用于編譯 C 程序上下文環(huán)境內(nèi)部。它是一種客戶機庫,提供可用來與 MySQL 服務器對話的最低級別的接口——具有創(chuàng)建與服務器通信所需的能力。DBI 和 PHP 的前身 DBI 的 Perl 前身是 Mysqlperl 模塊 Mysql.pm。這個模塊不再被支持,而且不應該用于新的 MySQL 的開發(fā)。有一件事需要明白,Mysqlperl 是依賴于 MySQL 的,但DBI 不是。如果編寫 MySQL 的 Perl 應用程序,然后,決定想用另外一種數(shù)據(jù)庫引擎來使用它們,則移植 DBI 腳本比 Mysqlperl 腳本更容易一些,因為它們很少依賴于特定的數(shù)據(jù)庫引擎。

如果獲取了訪問 MySQL 的一段 Perl 腳本,并發(fā)現(xiàn)它是用 Mysqlperl 而不是 DBI 編寫的,則仍然可以使用 DBI。DBI 包括了對 Mysqlperl 的仿真支持,因此不需要安裝兩個程序包。PHP3 的前身是 PHP/FI 2.0 (FI代表“ form interpreter ,即格式解釋程序”)。像 Mysqlperl 一樣,PHP/FI 也是過時的,所以我們就不再進一步討論它了。

MySQL C API 的起源如果已經(jīng)有編寫 mSQL RDBMS 程序的經(jīng)驗,那么將注意到 MySQLC API 類似于 mSQL 相應的 C API。當 MySQL 的開發(fā)者們開始實現(xiàn)他們的 SQL 引擎時,許多有用的共享實用程序可用于 mSQL。要想花費最小的難度將那些 mSQL 實用程序移植為 MySQL 的實用程序是可能的,可有意地將 MySQLAPI 設計為與mSQL API 類似(MySQL 甚至帶有與 mSQL API 函數(shù)名稱相應的 MySQL 名稱的簡單的文本替代品的msql2mysql 腳本。這個操作相對煩瑣,實際上也照顧了許多涉及為使用 MySQL 而轉(zhuǎn)換 mSQL 程序的工作)。

MySQL 分發(fā)包提供的C 客戶機是基于這個 API 的。C 客戶機庫也作為 MySQL 對其他語言約束的基礎來提供服務,但 Java API 是一個例外。例如,通過連接 MySQLC 客戶機庫代碼,MySQL 可用 Perl DBI 模塊專有的MySQL驅(qū)動程序和 PHP 代碼。

Perl DBI APIDBI API 用于 Perl 腳本語言編寫的應用程序的上下文環(huán)境內(nèi)部。這種 API 在我們考慮的這三種 API 結構中是最高的,因為它可與許多數(shù)據(jù)庫工作,而同時在腳本中可忽略許多特定數(shù)據(jù)庫的細節(jié)。DBI 經(jīng)過使用兩級結構的 Perl 模塊來實現(xiàn)。

■ DBI (數(shù)據(jù)庫接口)級。為客戶機腳本提供接口。這個級別提供的是抽象接口,并不是指特定數(shù)據(jù)庫引擎。

■ DBD (數(shù)據(jù)庫驅(qū)動器)級。在這個級別由特定引擎的驅(qū)動程序來提供對各種數(shù)據(jù)庫引擎的支持。

MySQL 對 DBI 的支持環(huán)境由 Msql - Mysql - modules 分發(fā)包提供。這個模塊在DBD 級操作??梢詮姆职l(fā)包名稱中分辨它,一個驅(qū)動程序可以提供對一個以上的RDBMS 的支持。Msql-Mysql-Modules 最初是為mSQL 而編寫的,后來擴展到MySQL。這種影響類似于對 mSQL 和 MySQL 的 CAPI。由于設計的 MySQLCAPI 類似于 mSQL CAPI,所以將 mSQL DBD(使用 mSQL C API)擴展到對MySQL的使用很有意義。

DBI 體系結構編寫應用程序的風格相對普通。當編寫 DBI 腳本時,可使用一組標準的調(diào)用。DBI 級在 DBD 級調(diào)用適當?shù)尿?qū)動程序來處理請求,對于想使用的特定數(shù)據(jù)庫服務器通信中包括的特定問題,由驅(qū)動程序處理。DBD 級傳送從服務器返回的數(shù)據(jù),備份到 DBI 級,使數(shù)據(jù)出現(xiàn)在應用程序中。數(shù)據(jù)的格式與數(shù)據(jù)庫的數(shù)據(jù)來源一致。

其結果得到這樣一個接口,該接口從應用程序的編寫者的觀點隱藏了數(shù)據(jù)庫引擎之間的差異,這樣可使用多種不同的引擎——和驅(qū)動程序一樣多。DBI 通過允許以統(tǒng)一風格訪問每個數(shù)據(jù)庫來提供一致性客戶接口以增加可移植性。

當打開數(shù)據(jù)庫時,出現(xiàn)由腳本編寫的數(shù)據(jù)庫專有的界面。當創(chuàng)建連接時,應指出使用哪個驅(qū)動程序。

連接以后,對該驅(qū)動程序不需要再做任何做特殊的引用。讓 DBI 和該驅(qū)動程序解決數(shù)據(jù)庫專有的細節(jié)。
無論如何這都是理論問題。然而,至少有兩個因素與 DBI 腳本的可移植性矛盾:

■ 在RDBMS 引擎之間 SQL 的實現(xiàn)不同,為一個引擎編寫的 SQL 另一個引擎根本不理解是完全可能的。如果 SQL 相當通用,則腳本可在引擎之間作相應的移植。但如果 SQL 依賴于引擎,則腳本也是這樣。例如,如果使用 MySQL 指定的 SHOW TABLES 語句,則該腳本不能用其他數(shù)據(jù)庫執(zhí)行。

■ DBD 模塊通常提供引擎專有類型的信息來允許腳本編寫者使用特定數(shù)據(jù)庫系統(tǒng)的特定功能。例如, MySQLDBD 提供訪問查詢結果中列屬性的方法,如每列的最大長度、列是否是數(shù)值型的,等等。而這些屬性在其他數(shù)據(jù)庫中沒有任何相似物。DBD 專有的特性與可移植性相背,通過使用它們,將 MySQL 編寫的腳本用于其他數(shù)據(jù)庫系統(tǒng)是困難的。

盡管存在數(shù)據(jù)庫專有腳本的這兩個因素,但以抽象方式提供數(shù)據(jù)庫訪問的 DBI 機制是完成可移植性的合理方式,只要您決定利用它多少次即可。

像 Perl 一樣,PHP 也是一種腳本語言。但它與Perl 不同,PHP 很少作為通用目標語言來設計,而是作為編寫 Web 應用程序的一種語言。PHP API 主要作為在 Web 頁面中嵌入可執(zhí)行腳本的一種方法來使用。這使Web 的開發(fā)者們很容易用動態(tài)生成上下文環(huán)境來編寫頁面。

當客戶瀏覽器向 Web 服務器發(fā)送 PHP 頁面的請求時,PHP 執(zhí)行在該頁面中它所發(fā)現(xiàn)的任何腳本,并用腳本的輸出來替換它。該結果再送回瀏覽器。這就使瀏覽器中實際出現(xiàn)的頁面根據(jù)請求的頁面環(huán)境的不同而有所不同。例如,當在 Web 頁面中嵌入下面簡短的 PHP 腳本時,它出現(xiàn)所請求頁面的主機 IP 地址:

可以使用腳本為訪問者提供基于數(shù)據(jù)庫上下文環(huán)境的最新信息。下面的樣例說明可用于 Historical League Web 站點的一個簡單腳本。該腳本發(fā)布一個請求來確定當前的 League 的成員數(shù)目,并將該數(shù)目報告給訪問該站點的人(如果出現(xiàn)錯誤,則該腳本不報告任何數(shù)目):

盡管 DBI 級是獨立于數(shù)據(jù)庫的,而 DBD 級是依賴于數(shù)據(jù)庫的,但那并不是“ DBI”和“DBD”所代表的意義。它們的意思是“數(shù)據(jù)庫接口”和“數(shù)據(jù)庫驅(qū)動程序”。

PHP 腳本通??雌饋硐袷菐в星度朐凇?”標識符中的腳本的 HTML 頁面。一個頁面可能包括若干個腳本。這為腳本的開發(fā)提供了一種非常靈活的方法。例如,如果您喜歡,可以編寫一個正常的 HTML 頁面來創(chuàng)建通用的頁面框架,然后再增加腳本的內(nèi)容。

對于不同的數(shù)據(jù)庫引擎,PHP 對統(tǒng)一的接口不再作任何事情, DBI 也用這種方法。取而代之,每個引擎的接口看起來非常像相應的實現(xiàn)該引擎低級 API 的 C 庫接口。例如,用于從 PHP 腳本內(nèi)部訪問 MySQL 的PHP 函數(shù)的名稱非常類似于 MySQL C 客戶庫中函數(shù)的名稱。

關于怎么理解MySQL的API接口就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


當前文章:怎么理解MySQL的API接口
網(wǎng)站地址:http://weahome.cn/article/gcgijg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部