- 相關(guān)推薦
淺論基于Delphi的數(shù)據(jù)庫(kù)開(kāi)發(fā)論文
摘 要:詳細(xì)分析了delphi下應(yīng)用數(shù)據(jù)庫(kù)的方法。Delphi下的數(shù)據(jù)庫(kù)開(kāi)發(fā)有著很強(qiáng)的優(yōu)勢(shì),這里對(duì)其進(jìn)行了總結(jié),對(duì)delphi的訪問(wèn)組件和數(shù)據(jù)操作組件進(jìn)行了詳細(xì)的分析。給出了一個(gè)實(shí)例來(lái)進(jìn)行說(shuō)明。
關(guān)鍵詞:delphi;數(shù)據(jù)庫(kù);ODBC;面向?qū)ο?/p>
引言
目前為止計(jì)算機(jī)軟件開(kāi)發(fā)分為兩個(gè)不同的體系,一個(gè)體系是使用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言(如Pascal、Basic和C等)開(kāi)發(fā)數(shù)值控制、數(shù)值運(yùn)算等軟件。另一個(gè)體系則是通用的數(shù)據(jù)庫(kù)管理軟件領(lǐng)域(數(shù)據(jù)庫(kù)應(yīng)用程序的開(kāi)發(fā))。數(shù)據(jù)庫(kù)系統(tǒng)為我們提供了一種把與我們的工作和生活緊密相關(guān)的信息集合在一起的方法,它還提供了在某個(gè)集中的地方存儲(chǔ)和維護(hù)這些信息的方法。數(shù)據(jù)庫(kù)系統(tǒng)主要由三大部分組成:數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS:它是專(zhuān)門(mén)負(fù)責(zé)組織和管理數(shù)據(jù)信息的程序)、 數(shù)據(jù)庫(kù)應(yīng)用程序(它使我們能夠獲取、顯示和更新由DBMS存儲(chǔ)的數(shù)據(jù))、數(shù)據(jù)庫(kù)(按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合)。
1 delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)
Delphi中處理數(shù)據(jù)庫(kù)主要有兩種方法,也就是BDE、ADO,從Delphi 6.0開(kāi)始還加入了一種dbExpress方法。Delphi還提供了專(zhuān)門(mén)處理Borland 公司自己的數(shù)據(jù)庫(kù)產(chǎn)品InterBase 數(shù)據(jù)庫(kù)的專(zhuān)門(mén)的方法。
BDE(Borland Databas Engine),是Delphi中最古老的技術(shù),從delphi 2.0加入BDE 技術(shù)以后,一直是Delphi處理數(shù)據(jù)庫(kù)的事實(shí)上的標(biāo)準(zhǔn)。BDE 是一個(gè)基于驅(qū)動(dòng)程序的體系結(jié)構(gòu),每一種數(shù)據(jù)格式或數(shù)據(jù)源都有一種驅(qū)動(dòng)程序來(lái)驅(qū)動(dòng)相近的數(shù)據(jù)源。BDE 可以很好的支持現(xiàn)在最流行的ODBC API方法,ODBC是一種C/C++ 應(yīng)用程序編程接口(API ),無(wú)論是對(duì)任何一種客戶/ 服務(wù)器關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS ),還是最流行索引順序訪問(wèn)方法(ISAM)數(shù)據(jù)庫(kù)(Jet、Foxpro)都能很好的訪問(wèn)。
ADO 技術(shù)是微軟提出來(lái)的處理關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)的新技術(shù),它基于微軟被稱(chēng)為OLE DB的數(shù)據(jù)訪問(wèn)模式,它是專(zhuān)門(mén)為了給大范圍商業(yè)數(shù)據(jù)源提供訪問(wèn)而設(shè)計(jì)的,包括傳統(tǒng)的關(guān)系型數(shù)據(jù)表、電子郵件系統(tǒng)、圖形格式、Internet資源等。ADO 所需內(nèi)存更少,更適合大流量和大事務(wù)量的網(wǎng)絡(luò)計(jì)算機(jī)系統(tǒng)。
2 delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)優(yōu)勢(shì)
如果使用數(shù)據(jù)庫(kù)語(yǔ)言進(jìn)行傳統(tǒng)的算術(shù)編程,雖然也能完成相應(yīng)的功能,但是其編程過(guò)程可能極為復(fù)雜。如果使用傳統(tǒng)的編程語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)編程,通過(guò)調(diào)用專(zhuān)用的數(shù)據(jù)庫(kù)應(yīng)用程序接口函數(shù)和過(guò)程,利用這些函數(shù)和過(guò)程提供的功能,可能也能做得比較完善,但這做起來(lái)大多是極其困難的。而Delphi結(jié)合了兩個(gè)體系的優(yōu)點(diǎn),它結(jié)合了傳統(tǒng)的編程語(yǔ)言O(shè)bject Pascal和數(shù)據(jù)庫(kù)語(yǔ)言的強(qiáng)大功能,它即可以用于傳統(tǒng)的算術(shù)編程又可以用于數(shù)據(jù)庫(kù)編程,特別是Delphi具有強(qiáng)大的數(shù)據(jù)庫(kù)功能,利用Delphi的數(shù)據(jù)庫(kù)工具,我們根本不需要編寫(xiě)任何Object Pascal代碼便可以創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用。
3 Delphi數(shù)據(jù)庫(kù)常用組件
3.1數(shù)據(jù)訪問(wèn)組件
Table、Query和Storedproc三個(gè)組件也稱(chēng)為數(shù)據(jù)集組件,用于和數(shù)據(jù)庫(kù)連接,可將這些組件視為數(shù)據(jù)庫(kù),對(duì)它們的操作就可認(rèn)為是對(duì)數(shù)據(jù)庫(kù)的操作。
DataSource組件是數(shù)據(jù)集組件和數(shù)據(jù)控制組件的連接媒介。數(shù)據(jù)控制組件是用戶操作數(shù)據(jù)庫(kù)中數(shù)據(jù)的界面,只有通過(guò)DataSource才能和數(shù)據(jù)集組件連接,從而獲得數(shù)據(jù)用來(lái)進(jìn)行顯示、修改等操作。
?Query組件是利用結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)通過(guò) BDE來(lái)操作數(shù)據(jù)庫(kù)的,采用SQL來(lái)實(shí)現(xiàn)。
Storedproc組件是通過(guò) BDE對(duì)服務(wù)器數(shù)據(jù)庫(kù)進(jìn)行操作的,常用于客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序。
DataBase組件一般用于建立遠(yuǎn)程的數(shù)據(jù)庫(kù)服務(wù)器--客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序和數(shù)據(jù)庫(kù)之間的連接。
Session組件是用于控制數(shù)據(jù)庫(kù)應(yīng)用程序和數(shù)據(jù)庫(kù)連接的,主要用于復(fù)雜的功能,比如多線程數(shù)據(jù)庫(kù)程序編程。
BatchMove組件 用于大批數(shù)據(jù)的轉(zhuǎn)移、復(fù)制等。
UpdateSQL組件專(zhuān)用于只讀數(shù)據(jù)庫(kù),用于緩存數(shù)據(jù)庫(kù)的更新。
3.2數(shù)據(jù)控制組件
數(shù)據(jù)控制組件也可稱(chēng)為數(shù)據(jù)顯示組件或數(shù)據(jù)瀏覽組件。它們的主要功能是和數(shù)據(jù)訪問(wèn)組件配合供用戶對(duì)數(shù)據(jù)進(jìn)行瀏覽、編輯等操作。數(shù)據(jù)控制組件在組件板上的DataControl頁(yè)上,共有15個(gè)組件。它們分別是: DBGrid組件、DBNavigator組件、DBText組件、DBEdit組件、DBMemo組件、DBImage組件、DBListbox組件、DBComboBox組件、DBCheckBox組件、DBRadioGroup組件、DBLookupListBox組件、DBLookupComboBox組件、DBRichEdit組件、DBCtrlGrid組件、DBChart組件。另外還有一些組件與數(shù)據(jù)庫(kù)有關(guān)。Decision Cube是一組主要用于統(tǒng)計(jì)的組件,可以表格或圖形等直觀的方式表達(dá)統(tǒng)計(jì)結(jié)果,不過(guò),似乎應(yīng)用的不是很廣泛。QReport 組件是用來(lái)最后輸出報(bào)表的組件。
4 delphi下數(shù)據(jù)庫(kù)應(yīng)用例子
下面以一個(gè)簡(jiǎn)單的例子演示delphi下數(shù)據(jù)庫(kù)的應(yīng)用。在Form1.FormCreate事件中寫(xiě)入如下代碼,程序啟動(dòng)時(shí),將自動(dòng)檢測(cè)是否存在數(shù)據(jù)庫(kù)別名Cntssamp,如果沒(méi)有則建立之;自動(dòng)檢測(cè)別名Cntssamp中是否存在表格TSK(圖書(shū)庫(kù)),如果沒(méi)有則自動(dòng)建立表格TSK。
procedure TForm1.FormCreate(Sender: TObjecvar ap:TStringList;
answer:Integer;
begin ap:=TStringlist.Create;
Session.GetAliasNames(ap); {取得別名列表}
if (ap.IndexOf(Cntssamp)=-1) then {判斷別名是否存在}
begin
answer:=Application.MessageBox(BDE信息窗口,mb—OKCancel);{增加一個(gè)名為Cngzsamp的數(shù)據(jù)庫(kù)別名}
if answer=IDCANCEL then
begin
ap.Free; Exit; end;
Session.AddStandardAlias(Cntssamp,c:delphp11,Paradox);
Session.SaveConfigFile; {BDE配置文件存盤(pán)}
end ;
ap.Clear; {取得Cngzsamp中的所有表格名稱(chēng)列表}
Session.GetTableNames(Cntssamp,,False,False,ap);
if (ap.IndexOf(TSK)=-1) then {判斷表格是否存在}
begin
answer:=Application.MessageBox(Cntssamp中不存在表格TSK,現(xiàn)在創(chuàng)建嗎?,表格信息窗口,mb—OKCancel);
if answer=IDCANCEL then
begin
ap.Free; Exit; end;
with table1 do
begin
Active:=false;
DatabaseName:=Cntss& {數(shù)據(jù)庫(kù)別名}
TableName:=TSK; {表格名}
TableType:=ttParadox; {數(shù)據(jù)庫(kù)類(lèi)型}
with FieldDefs do
begin {增加字段}
with IndexDefs do
begin {增加索引}
Clear; {按書(shū)號(hào)字段建立主索引}
Add(SHSY,SH,[Primary,ixUnique]); end;
CreateTable; {創(chuàng)建表格}
end; end ; ap.free; {釋放變量ap} end;
5總結(jié)
本文對(duì)delphi在其數(shù)據(jù)庫(kù)應(yīng)用中的地位進(jìn)行了詳細(xì)的分析。指出了delphi應(yīng)用于數(shù)據(jù)庫(kù)的各種方法,并且用例子詳細(xì)地說(shuō)明。用delphi處理數(shù)據(jù)庫(kù),形象、方便,大大提高了編程的效率。
參考文獻(xiàn):
[1]薩師炕,王珊,數(shù)據(jù)庫(kù)系統(tǒng)概論(第三版),高等教育出版社,1983年8月
[2]李新宇,鄭麗群,吳志強(qiáng).ORACLE分布式數(shù)據(jù)庫(kù)及應(yīng)用.計(jì)算機(jī)應(yīng)用[J].2004(22):71~61.
[3]周愛(ài)民,Delphi源代碼分析,電子工業(yè)出版社2004年9月
【淺論基于Delphi的數(shù)據(jù)庫(kù)開(kāi)發(fā)論文】相關(guān)文章:
Delphi下基于GIS的某邊防管控信息系統(tǒng)開(kāi)發(fā)04-27
淺論鐵路物資企業(yè)的數(shù)據(jù)庫(kù)營(yíng)銷(xiāo)戰(zhàn)略論文04-30
基于Delphi的發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn)單片機(jī)控制系統(tǒng)的開(kāi)發(fā)05-02
基于BREW的無(wú)線數(shù)據(jù)業(yè)務(wù)開(kāi)發(fā)論文05-04
基于Avenue語(yǔ)言的GIS空間數(shù)據(jù)庫(kù)管理與開(kāi)發(fā)04-29
淺論基于RFID技術(shù)的供應(yīng)鏈管理論文05-06
淺論基于核心素養(yǎng)的課堂改革04-30