[程序開發(fā)系列一]現(xiàn)流行數(shù)據(jù)庫程序開發(fā)工具的比較分析
武漢華中師大信管系 謝剛
摘要:隨著計算機(jī)技術(shù)不斷發(fā)展,各種數(shù)據(jù)庫編程工具也隨著發(fā)展,使當(dāng)今的大多數(shù)程序開發(fā)人員可以擺脫枯燥無味的用計算機(jī)指令或匯編語言開發(fā)軟件,而是利用一系列高效的、具有良好可視化的編程工具去開發(fā)各種數(shù)據(jù)庫軟件,從而達(dá)到事半功倍的效果,但是現(xiàn)在市面上的數(shù)據(jù)庫編程工具門類眾多,優(yōu)良不齊,比如vb,vc,dephi,pb等,對此我特別針對流行的開發(fā)語言介紹相應(yīng)的較為成熟的數(shù)據(jù)庫編程工具。
關(guān)鍵字:數(shù)據(jù)庫編程 程序開發(fā)工具
1 幾種數(shù)據(jù)庫開發(fā)工具的介紹
1.1 vb
全稱visual basic,它是以basic語言作為其基本語言的一種可視化編程工具。在中國乃至全世界都曾看到過它的身影,它曾是在中國最為流行的編程工具,到現(xiàn)在還占據(jù)著非常重要的地位,對于它的好壞大家都有一定的了解,vb作為一種較早出現(xiàn)的開發(fā)程序以其容易學(xué)習(xí),開發(fā)效率較高,具有完善的幫助系統(tǒng)等優(yōu)點(diǎn)曾影響了好幾代編程人員,但是由于vb不具備跨平臺這個特性,從而也決定了vb在未來的軟件開發(fā)中將會逐漸地退出其歷史舞臺;它對組件技術(shù)的支持是基于com和activex,對于組件技術(shù)不斷完善發(fā)展的今天,它也顯出了它的落后性;同時vb在進(jìn)行系統(tǒng)底層開發(fā)的時候也是相對復(fù)雜的,調(diào)用api函數(shù)需聲明,調(diào)用不方便,不能進(jìn)行ddk編程,不可能深入ring0編程,不能嵌套匯編;而且面向?qū)ο蟮奶匦圆睿痪W(wǎng)絡(luò)功能和數(shù)據(jù)庫功能也沒有非常特出的表現(xiàn),綜上所述,vb作為一種可視化的開發(fā)工具由于其本身的局限性,導(dǎo)致了它在未來軟件開發(fā)中逐步被其他工具所代替。
1.2 pb
全稱powerbuilder,是開發(fā)mis系統(tǒng)和各類數(shù)據(jù)庫跨平臺的首選,使用簡單,容易學(xué)習(xí),容易掌握,在代碼執(zhí)行效率上也有相當(dāng)出色的表現(xiàn)。pb是一種真正的4gl語言(第四代語言),可隨意直接嵌套sql語句返回值被賦值到語句的變量中,支持語句級游標(biāo),存儲過程和數(shù)據(jù)庫函數(shù),是一種類似sqlj的規(guī)范,數(shù)據(jù)訪問中具有無可比擬的靈活性。但是它在系統(tǒng)底層開發(fā)中犯了跟vb一樣的錯誤,調(diào)用api函數(shù)需聲明,調(diào)用不方便,不能進(jìn)行ddk編程,不可能深入ring0編程,不能嵌套匯編;在網(wǎng)絡(luò)開發(fā)中提供了較多動態(tài)生成web頁面的用戶對象和服務(wù)以及系統(tǒng)對象,非常適合編寫服務(wù)端動態(tài)web應(yīng)用,有利于商業(yè)邏輯的封裝;但是用于網(wǎng)絡(luò)通訊的支持不足;靜態(tài)頁面定制支持有限,使得pb在網(wǎng)絡(luò)方面的應(yīng)用也不能非常廣泛。面向?qū)ο筇叵蛞膊皇翘谩?br>
1.3 c++builder/delphi
它們都是基于vcl庫的可視化開發(fā)工具,它們在組件技術(shù)的支持、數(shù)據(jù)庫支持、系統(tǒng)底層開發(fā)支持、網(wǎng)絡(luò)開發(fā)支持、面向?qū)ο筇匦缘雀鞣矫娑加邢喈?dāng)不錯的表現(xiàn),并且學(xué)習(xí)使用較為容易,充分提現(xiàn)了所見即所得的可視化開發(fā)方法,開發(fā)效率高。由于兩者都是borland 公司的產(chǎn)品,自然繼承了該公司一貫以來的優(yōu)良傳統(tǒng):代碼執(zhí)行效率高。但是,它們并不是毫無缺點(diǎn),它們所作的最大不足之處就是他們的幫助系統(tǒng)在眾多的編程工具中是屬于比較差的。c++builder 的vcl庫是基于object pascal(面向?qū)ο髉ascal),使得c++builder在程序的調(diào)試執(zhí)行上都面向落后于其他編程工具。而delphi則是它的語言不夠廣泛,開發(fā)系統(tǒng)軟件功能不足兩個比較大的缺點(diǎn)。
1.4 visual c++
是基于mfc庫的可視化的開發(fā)工具,從總體上說它是一個功能強(qiáng)大但是不便使用的一種工具。它在網(wǎng)絡(luò)開發(fā)和多媒體開發(fā)都具有不俗的表現(xiàn),幫助系統(tǒng)也做得非常不錯(microsoft 在細(xì)節(jié)方面的處理往往都讓人覺得親切),但是雖然是使用c++作為基本語言,但是它在面向?qū)ο筇匦陨蠀s不夠好,主要是為了兼容c的程序,結(jié)果顧此失彼;在組件支持上也不太好,雖然說除了支持com,activex外還支持corba,但是沒有任何ide支持,是所有c編譯器的功能, 需要corba中間件支持;最大的問題是開發(fā)效率也不高。
1.5 java編程工具
目前比較出名的是borland出的jbuilder和ibm出的visual age for java,兩種工具都有一定數(shù)量的是用人群。jbuilder繼承了c++builder/delphi的特點(diǎn),在可視化上做得非常不錯,使用簡便。由于java本身語言的特點(diǎn)使得他們在網(wǎng)絡(luò)開發(fā)中具有高人一等的表現(xiàn),而且面向?qū)ο筇匦愿撸С值慕M件技術(shù)也非常多,跨平臺的特性也使得它在現(xiàn)在和未來的開發(fā)中占據(jù)越來越重要的地位。但是在系統(tǒng)底層開發(fā)和多媒體開發(fā)中卻表現(xiàn)得并不讓人那么滿意,這個可能跟設(shè)計java的意圖有關(guān)吧。
2 各種開發(fā)工具在對數(shù)據(jù)庫方面的支持比較分析
2.1數(shù)據(jù)訪問對象:
2.1.1vb:dao,ado,rdo功能相仿;
2.1.2pb:transaction,dwcontrol,可綁定任何sql語句和存儲過程,數(shù)據(jù)訪問具有無與比擬的靈活性
2.1.3 c++ builder/dephi:具有包括datasource,table,query,midas,ado在內(nèi)的二十多個組件和類完成數(shù)據(jù)訪問
2.1.4 vc:同vb,但有不少類庫可供使用,但極不方便,開發(fā)效率很低
2.1.5 java:java jdbc api,不同的ide具有不同的組件
2.2 數(shù)據(jù)表現(xiàn)對象:
2.2.1 vb:dbgrid,與數(shù)據(jù)庫相關(guān)的數(shù)據(jù)表現(xiàn)控件只有此一種,只能表現(xiàn)簡單表格數(shù)據(jù),表現(xiàn)手段單一
2.2.2 pb:datawindow對象(功能異常強(qiáng)大,其資源描述語句構(gòu)成類似html的另外一種語言,可在其中插入任何對象,具有包括dbgrid在內(nèi)的數(shù)百種數(shù)據(jù)表現(xiàn)方法),只此一項功能就注定了pb在數(shù)據(jù)庫的功能從誕生的那一天起就遠(yuǎn)遠(yuǎn)超過了某些開發(fā)工具今天的水平
2.2.3 c++builder/dephi:具有包括dbgrid,dbnavigator,dbedit, dblookuplistbox在內(nèi)的15個數(shù)據(jù)感知組件,decisioncube, decisionquery在內(nèi)的6個數(shù)據(jù)倉庫組件和包括qrchart, qrexpr在內(nèi)的20多個報表組建,可靈活表現(xiàn)數(shù)據(jù)
2.2.4 vc:同數(shù)據(jù)訪問對象
2.2.5 java:不同的ide具有不同的組件,比較著名的有jbuilder,powerj, visualage for java
2.3 語句執(zhí)行方式:
2.3.1 vb:將一句sql串綁定到一個命令對象中,結(jié)果返回到resultset對象中自行拆取
2.3.2 pb:是一種真正的4gl語言,可隨意直接嵌套sql語句返回值被賦值到語句的變量中,支持語句級游標(biāo),存儲過程和數(shù)據(jù)庫函數(shù),是一種類似sqlj的規(guī)范
2.3.3 c++ builder/dephi:使用數(shù)據(jù)庫組件或類完成sql語句串的執(zhí)行和提交
2.3.4 vc:同數(shù)據(jù)訪問對象
2.3.5 java:sqlj,java jdbc api
3 各種開發(fā)工具其他的比較分析
3.1面向?qū)ο筇匦?
vb:差;pb:較好;c++ builder/dephi:很好; vc:一般 ;java:非常好
3.2跨平臺特性
vb:跨平臺性不怎么好,但是可以與windows 家族無縫連接。
pb:跨平臺性一般
c++ builder/dephi:windows家族,linux
vc:無
java:所有能夠運(yùn)行java虛擬機(jī)的操作系統(tǒng)
3.3 組件技術(shù)支持
vb:com,activex
pb:com,javabean,jaguar,userobject使用:corba+acti vex
c++ builder/dephi:com, activex corba(本身自帶corba中間件visibroker,有豐富向?qū)В?br>vc:com,activex,corba(沒有任何ide支持,是所有c編譯器的功能,需要corba中間件支持)
java:javabean,corba;activex
3.4網(wǎng)絡(luò)或支持
vb:asp,vbscript,具有編寫dhtml的簡單ide,編寫靜態(tài)頁面非常方便;用于網(wǎng)絡(luò)通訊的支持一般
pb:dynasript, web.pb;提供了較多動態(tài)生成web頁面的用戶對象和服務(wù)以及系統(tǒng)對象,非常適合編寫服務(wù)端動態(tài)web應(yīng)用,有利于商業(yè)邏輯的封裝;用于網(wǎng)絡(luò)通訊的支持不足;靜態(tài)頁面定制支持有限
c++ builder/dephi:isapi,wininet api等各類網(wǎng)絡(luò)或互聯(lián)網(wǎng)api可自由而方便的調(diào)用;提供了serversocket,clientsocket等三十余個組件及類,用來處理網(wǎng)絡(luò)通訊控制,流處理,mail,email,ftp,http等應(yīng)用協(xié)議處理以及生成動態(tài)頁面和商業(yè)邏輯的封裝;功能強(qiáng)大,使用方便
vc:sapi,wininet api等各類網(wǎng)絡(luò)或互聯(lián)網(wǎng)api可自由而方便的調(diào)用;提供casyncsocket等數(shù)量眾多的類;功能強(qiáng)大但使用不太方便
java:不可直接調(diào)用api但內(nèi)置非常多的網(wǎng)絡(luò)及互聯(lián)網(wǎng)功能;可利用servlet api,java bean api,以及jsp等協(xié)同開發(fā)功能強(qiáng)大的web應(yīng)用;功能強(qiáng)大,對于某些ide使用不太方便
4 綜合評價:
4.1 vb:是新人開發(fā)與系統(tǒng)無關(guān)的綜合應(yīng)用程序的首選;容易使用和廠商財力很強(qiáng)是其僅有的兩點(diǎn)優(yōu)勢。vb開發(fā)效率高,代碼執(zhí)行效率一般,但是入門和學(xué)習(xí)速度快,有較好的學(xué)習(xí)氛圍和幫助書籍和幫助文檔。但是隨著微軟的.net技術(shù)的推廣,vb將會逐漸推出歷史舞臺。
pb:是開發(fā)大型mis及各類數(shù)據(jù)庫跨平臺應(yīng)用的首選;從數(shù)據(jù)庫前端工具來講甚至遠(yuǎn)遠(yuǎn)超過了oracle的develop系列等專門的工具;從通用語言角度來講功能也與vb等不相上下;多媒體和網(wǎng)絡(luò)功能與其他工具相比較弱。
4.2 pb最大的優(yōu)勢就是datawindow技術(shù)的成熟和方便,他成為pb與其他數(shù)據(jù)庫開發(fā)工具抗衡的資本。同時pb在對java和web,以及面向?qū)ο蠓矫娴陌l(fā)展也可以預(yù)見pb將成繼續(xù)成為數(shù)據(jù)庫系統(tǒng)(特別是mis系統(tǒng))開發(fā)工具的首選。同時pb的強(qiáng)大幫助文檔也為初學(xué)者提供了入門基礎(chǔ),pb連接數(shù)據(jù)庫的自由和方面也為pb的提供了方便,同時pb對api的調(diào)用以及對報表的處理強(qiáng)大。但是pb的高級編程書籍的缺乏和基礎(chǔ)語言powerscript的普及程度對pb的明天有一定的限制。
4.3 c++ builder/dephi:是唯一一套能夠同時適用于開發(fā)數(shù)據(jù)庫應(yīng)用、網(wǎng)絡(luò)及web應(yīng)用、分布式應(yīng)用、可重用組件、系統(tǒng)軟件、驅(qū)動程序、多媒體及游戲等所有軟件的高效率開發(fā)環(huán)境;vcl源碼基于object pascal是c++ builder 唯一的缺憾,基礎(chǔ)語言不夠通用和開發(fā)系統(tǒng)軟件功能不足是dephi僅有的兩點(diǎn)不足。
4.4 vc:從功能上講除了跨平臺應(yīng)用外什么都可開發(fā);從開發(fā)效率角度講只局限于開發(fā)windows系統(tǒng)應(yīng)用、可重用組件及驅(qū)動程序。 又因為有微軟的支持,其自身的基礎(chǔ)語言的普及程度高,以及其代碼的執(zhí)行效率高等特性、vc自帶強(qiáng)大幫助文檔和大量優(yōu)質(zhì)教材,vc在數(shù)據(jù)庫開發(fā)工具中始終可以穩(wěn)住陣角。
4.5 java:適用于開發(fā)除了系統(tǒng)軟件、驅(qū)動程序、高性能實(shí)時系統(tǒng)、大規(guī)模圖像處理以外所有的應(yīng)用。在一般的管理信息系統(tǒng)中和一般的數(shù)據(jù)庫開發(fā)中,很少有人會選擇java,一是由于其開發(fā)環(huán)境的配置較難,已經(jīng)和數(shù)據(jù)庫連接時較為負(fù)責(zé),對開發(fā)人員的開發(fā)經(jīng)驗和學(xué)習(xí)時間都要很高要求,所以對于經(jīng)驗不是很豐富的開發(fā)人員一般是不選擇java,但是java的強(qiáng)大網(wǎng)絡(luò)功能和真正的面向?qū)ο筇匦詻Q定了java的未來,java將在一個較為長期的時段里可以與微軟家族抗衡。
5 選擇開發(fā)工具的幾點(diǎn)建議:
5.1 如果你的程序基本上完全是數(shù)據(jù)錄入、查詢、匯總、打印等,性能要求高,打算使用c/s結(jié)構(gòu),那么powerbuilder的確是不錯的選擇。
5.2 如果數(shù)據(jù)庫要求不高,只是本地的,對于用戶界面、通信、多媒體等方面有要求,那么我覺得vb、vc、delphi更好。我個人不太喜歡bde,主要是分發(fā)和建立別名比較麻煩。
5.3 一旦你確定了基本使用的語言,那么采用什么方式也就定下來。如對于vc、vb,訪問本地數(shù)據(jù)庫一般為dao,訪問服務(wù)器上數(shù)據(jù)庫一般使用odbc/rdo/ado。我在訪問本地數(shù)據(jù)庫一般不使用ado,主要是在配置比較低的機(jī)器上速度比較慢,不過dao遲早要被ado取代。
5.4 同時結(jié)合ms sql或是my sql的其他功能,比如觸發(fā)器,存儲過程,視圖等。
6 說明:
6.1 參考(整理)網(wǎng)友意見部分:
1.1,1.3,1.4,2.2.3,3.3,3.4
6.2 原創(chuàng)部分:
1.2,2.1,2.2,2.3,3.1,3.2,4(全部),5(全部)
6.3 其他為對一些網(wǎng)友和自己的看的整理歸納
6.4 由于自己能力有限,漏洞之處還請大家斧正!
6.5 希望對大家在進(jìn)行數(shù)據(jù)庫程序開發(fā)選擇開發(fā)工具(或是學(xué)習(xí))時有用
6.6 最后提醒一下,注意根據(jù)自己的愛好和基礎(chǔ)選擇一個或是多個適合自己并適合當(dāng)前程序需求的開發(fā)工具。切勿多而不精!