新聞中心
Delphi是一種非常強(qiáng)大的開(kāi)發(fā)工具,它的數(shù)據(jù)庫(kù)開(kāi)發(fā)能力更是卓越。在Delphi中,您可以開(kāi)發(fā)具有靈活性、高效性和可靠性的數(shù)據(jù)庫(kù)系統(tǒng),使您能夠更好地管理和利用您的數(shù)據(jù)。

本文將介紹delphi數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)...的指導(dǎo)原則和更佳實(shí)踐,并給出一些實(shí)用的技巧和技術(shù),幫助您創(chuàng)建和維護(hù)穩(wěn)健、高效的數(shù)據(jù)庫(kù)系統(tǒng)。
一、數(shù)據(jù)建模
作為數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)的之一步,數(shù)據(jù)建模是一個(gè)至關(guān)重要的環(huán)節(jié)。在Delphi中,使用數(shù)據(jù)建模器,可以幫助您快速地為您的數(shù)據(jù)庫(kù)應(yīng)用程序創(chuàng)建數(shù)據(jù)模型。
在數(shù)據(jù)建模中,您需要明確數(shù)據(jù)的結(jié)構(gòu)和關(guān)系,并為每個(gè)實(shí)體定義數(shù)據(jù)字段。您的數(shù)據(jù)模型應(yīng)該遵循三范式(之一范式、第二范式和第三范式),這將確保您的數(shù)據(jù)存在最小重復(fù),并能夠輕松地查詢和更新。
二、數(shù)據(jù)訪問(wèn)
Delphi提供了多種方法來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。最常用的方法是使用ADO組件,它可以訪問(wèn)各種類型的數(shù)據(jù)庫(kù),包括Access、SQL Server和Oracle等。ADO組件還提供了一批數(shù)據(jù)集組件,如TDataSet和TClientDataSet,這樣您便可以方便地對(duì)數(shù)據(jù)進(jìn)行操作。
使用ADO組件,您可以快速地編寫(xiě)代碼,連接到數(shù)據(jù)庫(kù)并執(zhí)行SQL查詢語(yǔ)句。例如,如果您要查詢所有客戶的名稱和地址,您可以編寫(xiě)以下代碼:
“`Delphi
with ADOQuery1 do
begin
Close;
SQL.Text := ‘SELECT Name, Address FROM Customers’;
Open;
end;
“`
ADO組件還允許您使用一些內(nèi)置函數(shù)和方法來(lái)過(guò)濾和排序數(shù)據(jù)集,例如:
“`Delphi
with ADOQuery1 do
begin
Filter := ‘Name LIKE ”%John%”’;
Filtered := True;
end;
ADOQuery1.Sort := ‘Name DESC’;
“`
三、數(shù)據(jù)同步
在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),通常會(huì)遇到需要在兩個(gè)或多個(gè)不同的數(shù)據(jù)庫(kù)之間同步數(shù)據(jù)的情況。這可以通過(guò)使用Delphi的數(shù)據(jù)同步工具來(lái)實(shí)現(xiàn)。
數(shù)據(jù)同步工具可以幫助您管理數(shù)據(jù)的移植和更新過(guò)程,確保數(shù)據(jù)的一致性和可靠性。您可以通過(guò)設(shè)置同步規(guī)則和沖突處理策略來(lái)自動(dòng)地同步數(shù)據(jù)。
四、數(shù)據(jù)庫(kù)設(shè)計(jì)
在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),您需要考慮如何設(shè)計(jì)數(shù)據(jù)庫(kù),以更大化性能和可靠性。以下是一些關(guān)于設(shè)計(jì)數(shù)據(jù)庫(kù)的更佳實(shí)踐:
1. 對(duì)于大型數(shù)據(jù)庫(kù)應(yīng)用程序,使用分區(qū)表來(lái)提高性能。
2. 使用索引來(lái)快速地查找和更新數(shù)據(jù)。
3. 對(duì)于需要頻繁更新的表,使用更高效的數(shù)據(jù)類型,如整數(shù)和日期類型。
4. 使用視圖來(lái)簡(jiǎn)化復(fù)雜查詢,這樣可以將多個(gè)查詢合并為一個(gè)。
5. 對(duì)于需要保留歷史記錄的表,使用審計(jì)表來(lái)記錄更改歷史記錄。
五、數(shù)據(jù)備份和恢復(fù)
數(shù)據(jù)備份和恢復(fù)是數(shù)據(jù)庫(kù)系統(tǒng)管理的重要方面。在Delphi中,您可以使用數(shù)據(jù)管理工具來(lái)創(chuàng)建和調(diào)度備份操作,并使用數(shù)據(jù)恢復(fù)工具將數(shù)據(jù)還原到之前的狀態(tài)。
您可以使用Delphi的TBackup和TRestore組件來(lái)實(shí)現(xiàn)備份和恢復(fù),例如:
“`Delphi
with Backup1 do
begin
DatabaseName := ‘MyDatabase’;
BackupFile := ‘c:\backup.bak’;
Options := [boOverwriteFile, boVerify];
Execute;
end;
with Restore1 do
begin
DatabaseName := ‘MyDatabase’;
BackupFile := ‘c:\backup.bak’;
Options := [roForceRestore];
Execute;
end;
“`
六、數(shù)據(jù)安全
數(shù)據(jù)安全是一個(gè)重要的問(wèn)題,特別是對(duì)于需要保護(hù)敏感數(shù)據(jù)的應(yīng)用程序。在Delphi中,您可以使用加密技術(shù)來(lái)保護(hù)您的數(shù)據(jù)。
Delphi提供了一組加密組件,包括TEncrypt和TDCP_cipher等,您可以使用它們來(lái)加密和解密數(shù)據(jù)。例如,如果您要將密碼保存到數(shù)據(jù)庫(kù)中,您可以使用以下代碼對(duì)密碼進(jìn)行加密和解密:
“`Delphi
function EncryptPassword(AValue: string): string;
begin
Result := EncryptString(AValue, ‘MyEncryptionKey’);
end;
function DecryptPassword(AValue: string): string;
begin
Result := DecryptString(AValue, ‘MyEncryptionKey’);
end;
“`
七、
本文介紹了Delphi數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)的一些重要方面,包括數(shù)據(jù)建模、數(shù)據(jù)訪問(wèn)、數(shù)據(jù)同步、數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)備份和恢復(fù)以及數(shù)據(jù)安全。通過(guò)采用更佳實(shí)踐和技巧,您可以創(chuàng)建靈活、高效、可靠的數(shù)據(jù)庫(kù)應(yīng)用程序,以更好地管理和利用您的數(shù)據(jù)。
相關(guān)問(wèn)題拓展閱讀:
- 關(guān)于DELPHI動(dòng)態(tài)數(shù)據(jù)庫(kù)
- Delphi深度探索之使用Bold開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用(1)
關(guān)于DELPHI動(dòng)態(tài)數(shù)據(jù)庫(kù)
在Delphi中動(dòng)態(tài)建立數(shù)據(jù)庫(kù)結(jié)構(gòu)
一、問(wèn)題的提出
在程序運(yùn)行過(guò)程中動(dòng)態(tài)建立數(shù)據(jù)庫(kù)結(jié)構(gòu)是我們編寫(xiě)功能通用的數(shù)據(jù)庫(kù)管理系統(tǒng)常見(jiàn)
的問(wèn)題。通用數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)的基本思路是:系統(tǒng)允許用戶自行設(shè)定管理對(duì)象的數(shù)據(jù)
庫(kù)結(jié)構(gòu),然后通過(guò)算法和編程技巧,在用戶設(shè)定完成后動(dòng)態(tài)創(chuàng)建管理對(duì)象的數(shù)據(jù)庫(kù)結(jié)構(gòu)和
完成系統(tǒng)功能的一些其它數(shù)據(jù),這樣可以滿足不同用戶對(duì)管理系統(tǒng)管理項(xiàng)目的不同要求,
進(jìn)而達(dá)到通用的目的。因此,通用數(shù)據(jù)庫(kù)圓舉前管理系統(tǒng)開(kāi)發(fā)的關(guān)鍵是系統(tǒng)能否動(dòng)態(tài)地創(chuàng)建數(shù)據(jù)
庫(kù)結(jié)構(gòu)。我們熟悉的Foxbase+、Foxpro等語(yǔ)言,均提供了動(dòng)態(tài)創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)的命令或過(guò)
程。
但是,在許多資料和書(shū)籍中,沒(méi)有介紹用Delphi如何動(dòng)態(tài)建立數(shù)據(jù)庫(kù)結(jié)構(gòu),給我們開(kāi)發(fā)
一些功能通用的數(shù)據(jù)庫(kù)管理系統(tǒng)帶來(lái)了不便。那么如何在Delphi中動(dòng)態(tài)建立數(shù)據(jù)庫(kù)結(jié)構(gòu)
呢?本文是作者在查閱大量資料,經(jīng)過(guò)反復(fù)實(shí)踐的基礎(chǔ)上得出的在Delphi中動(dòng)態(tài)創(chuàng)建數(shù)據(jù)
庫(kù)結(jié)構(gòu)的方法。
二、設(shè)置Delphi數(shù)據(jù)庫(kù)配置程序
在Delphi中要進(jìn)行數(shù)據(jù)庫(kù)管理必須先設(shè)置好數(shù)據(jù)庫(kù)配置程序BDE,所有對(duì)數(shù)據(jù)庫(kù)的操
作,最后都要通過(guò)BDE去完成。下面以最常見(jiàn)的Dbase數(shù)據(jù)庫(kù)為例來(lái)配置Delphi的數(shù)據(jù)庫(kù)引
擎BDE。
1. 進(jìn)入Delphi的集成開(kāi)發(fā)環(huán)境IDE(Integrated Development Environment),在Dat
abase菜單下選擇Explore,出現(xiàn)SQL Explorer窗體,在Object菜單下選擇BDE Administra
tor。
2. 出現(xiàn)BDE Administrator窗體后在Database頁(yè)上選擇Dbase,在Definition頁(yè)中將
Type項(xiàng)設(shè)為Standard;將Default Driver項(xiàng)設(shè)為Dbase;將Path項(xiàng)設(shè)為一工作目錄名(如:D
:\MYNAME)。以上過(guò)橘清程即為數(shù)據(jù)庫(kù)的別名(Aliases)設(shè)置,這在以后Delphi的程序開(kāi)發(fā)過(guò)程
中要經(jīng)常用到。
3. 選擇Configration頁(yè),在Drivers的Native項(xiàng)中選擇Dbase,在Definition頁(yè)中將T
ype項(xiàng)設(shè)為File;將Langdriver項(xiàng)設(shè)為DBASE CHS CP936;將Level項(xiàng)設(shè)為5。
4. 完成上述工作后,在Object菜單中選擇Save as Configration,按出現(xiàn)的對(duì)話框要
求將以上的設(shè)置保存好。至此,數(shù)據(jù)庫(kù)的基本配置工作就完成了,我們就可以進(jìn)行下面的
工作了。
三、動(dòng)態(tài)創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)方法
在Delphi中動(dòng)態(tài)創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)有兩種方法。
方法一:使用Table組件的CreateTable方法。步驟如下:
1. 進(jìn)入Delphi的IDE建立一個(gè)新項(xiàng)目文件和新窗答鏈體(Form1)單元文件(unit1.pas)。
2. 在Form1上加入Table1、Edit1、Edit2、Button1組件。將Button1組件的Captio
屬性設(shè)為‘創(chuàng)建’。
3. 用鼠標(biāo)雙擊Button1進(jìn)入U(xiǎn)nit1.pas單元文件,在光標(biāo)處加入下列代碼。
with table1 do
egi
active:=false
databasename:=‘dbase’
tablename:=‘my.dbf’
tabletype:=ttdbase
fielddefs.clear
fielddefs.add(edit1.text,ftstring,10,false)
fielddefs.add(edit2.text,ftinteger,0,false)
createtable
end
4. 按F9鍵編譯運(yùn)行,在Edit1處輸入一字段名稱:ZD1,在Edit2處輸入一字段名稱:ZD
2,然后點(diǎn)擊”創(chuàng)建”按鈕,程序?qū)⒃贒:\MYNAME目錄中產(chǎn)生一個(gè)名為MY.DBF的數(shù)據(jù)庫(kù)文件,用
Database Desktop查看文件結(jié)構(gòu)如下:
FieldName
Type
Size
Dec
ZD1 C 10
ZD2 N 11
方法二:使用Query組件,用結(jié)構(gòu)化查詢語(yǔ)言SQL(Structured Query Language)語(yǔ)句創(chuàng)
建,步驟如下:
1. 同方法一之步驟1。
2. 在Form1窗體中加入Query1、Button1組件,將Query1的Database Name屬性設(shè)為‘
Dbase’;將Button1組件的Caption屬性設(shè)為‘創(chuàng)建’。
3. 在Query1的SQL屬性單擊,出現(xiàn)Sting List Editor窗口,在該窗體中輸入以下SQL
語(yǔ)句:
Create Table My(
ZD1 Char(10),
ZD2 Numeric(10,2))
4. 雙擊Button1進(jìn)入U(xiǎn)nit1.pas單元,在光標(biāo)處加入下列代碼:
Query1.ExecSQL
5. 按F9鍵 編譯運(yùn)行,在”創(chuàng)建”按鈕處單擊即可產(chǎn)生一個(gè)名為MY.DBF的數(shù)據(jù)庫(kù)文件,
存放在D:\MYNAME目錄中,用Database Desktop查看其結(jié)構(gòu)如下:
FieldName Type Size Dec
ZD1 C 10
ZD2 N 10 2
以上所介紹的操作和程序均在Windows98操作系統(tǒng)下,Delphi 3.0 C/S版上調(diào)試運(yùn)行
通過(guò)。
Delphi深度探索之使用Bold開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用(1)
介紹
下面我要介紹的Bold for Delphi就是是一套優(yōu)秀的基于UML模型驅(qū)動(dòng)的面向?qū)ο蟮臄?shù)據(jù)庫(kù)開(kāi)發(fā)框架 包括了幾十個(gè)組件組件 以及 個(gè)以上的類 可以用來(lái)輕松地實(shí)現(xiàn)信息模型設(shè)計(jì)及基于信息模型的的應(yīng)用程序
基礎(chǔ)概念介紹
為了使大家對(duì)Bold for Delphi整個(gè)框架的使用有一個(gè)大概的了解 下面將演示如何用UML設(shè)計(jì)一個(gè)簡(jiǎn)單的模型并用Bold來(lái)完成 并包括如何用Bold快速實(shí)現(xiàn)一個(gè)簡(jiǎn)單的操作界面
自打我和我老婆認(rèn)識(shí)以后 就染上了她的臭毛病 比較喜歡亂花錢(qián) 沒(méi)有節(jié)制 結(jié)果搞的自己常常是掙的不如花的多 老要借外債 后來(lái)痛定思痛 決定要對(duì)每月收支情況做預(yù)算 嚴(yán)格控制費(fèi)用支出 為此寫(xiě)了還寫(xiě)了好多的財(cái)務(wù)小程序 下面要講的這個(gè)例子程序就是一個(gè)常見(jiàn)的家庭小賬本程序 它可以用來(lái)統(tǒng)計(jì)家庭中的收支情況 軟件的功能要求如下
可以定義家庭中的各個(gè)人員的信息 可以輸入收支情況 并同消費(fèi)的人員關(guān)聯(lián)起來(lái) 給出一定時(shí)期內(nèi)消費(fèi)的情況統(tǒng)計(jì) 作為未來(lái)家庭預(yù)算的依據(jù)
建立信息模型
在產(chǎn)品的需求分析階段 我們首先要建立數(shù)據(jù)庫(kù)程序的信息模型 一般來(lái)說(shuō)信息模型主要是指基于ER圖的實(shí)體關(guān)系模型 這是因?yàn)槲覀兪褂玫臄?shù)據(jù)庫(kù)大部分都是關(guān)系型數(shù)據(jù)庫(kù) 雖然有些數(shù)據(jù)庫(kù) 比如Oracle有面向?qū)ο蟮奶匦?但不是很完善 一般很少使用 而關(guān)系型數(shù)據(jù)庫(kù)有一個(gè)很大的問(wèn)題就是無(wú)法直觀的體現(xiàn)面向?qū)ο蟮乃枷?關(guān)系型的ER模型能夠清晰地描述業(yè)務(wù)域的靜態(tài)的數(shù)據(jù)視圖 但你無(wú)法從模型獲取實(shí)體的操作及其相互之間的交互 同時(shí) 也很難在關(guān)系型數(shù)據(jù)庫(kù)中簡(jiǎn)單地實(shí)現(xiàn)繼承 重載 多態(tài)等等面向?qū)ο蟮募夹g(shù) 因此現(xiàn)代數(shù)據(jù)庫(kù)開(kāi)發(fā)方法所提倡的面向?qū)ο蟮木幊趟枷霟o(wú)法簡(jiǎn)單 清晰 平滑地映射為關(guān)系型數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)
統(tǒng)一建模語(yǔ)言(UML)是一種以可視化的方式建立軟件系統(tǒng)框架 并進(jìn)行文檔化的語(yǔ)言 UML語(yǔ)言是對(duì)當(dāng)今軟件工程領(lǐng)域成熟設(shè)計(jì)實(shí)踐的一個(gè)總結(jié) 并且已經(jīng)被實(shí)踐證明是可以成功地描述大型的復(fù)雜系統(tǒng)的 目前國(guó)內(nèi)很多的大型公司已經(jīng)開(kāi)始在軟件開(kāi)發(fā)過(guò)程中使用UML作為一種標(biāo)準(zhǔn)的信息模型設(shè)計(jì)語(yǔ)言了 Bold for Delphi就是基于UML的 它內(nèi)置了一套自己的UML建模工具 當(dāng)然我們也可以使用Rose或者M(jìn)odelMaker來(lái)進(jìn)行UML設(shè)計(jì)
面向?qū)ο蟮腢ML類圖則可以說(shuō)是對(duì)ER模型的一個(gè)擴(kuò)展 它對(duì)實(shí)體之間的關(guān)系以及相互之間的作用也進(jìn)行了描述 ER模型只是對(duì)要進(jìn)行保存的數(shù)據(jù)進(jìn)行的模型化 而類圖則包括了全部的類實(shí)體的屬性以及它們的操作和相互作用 它可以使我們對(duì)業(yè)務(wù)域問(wèn)題有一個(gè)更精確的視圖 通過(guò)使用各種類圖技術(shù)可以更容易地 也更快速地建立正確的軟件系統(tǒng)
基于Bold for Delphi的數(shù)據(jù)庫(kù)開(kāi)發(fā)革命性的一點(diǎn)就是允許我們直接把基于UML的類圖映射為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ) 而無(wú)須手工的通過(guò)代碼進(jìn)行轉(zhuǎn)換 要注意一點(diǎn)的是 Bold同其它建模工具如Together ModelMaker不同 它生成框架代碼時(shí)只使用了UML中的類圖 而Together等可以利用UML圖中的類圖 協(xié)作圖等其它UML元素來(lái)生成代碼框架 但是Together不負(fù)責(zé)生成對(duì)象模型對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)模型
類模型
下面的這個(gè)類圖就是我們的賬本程序的一個(gè)簡(jiǎn)單類圖
圖中顯示了兩個(gè)類 人員信息類 Person 以及賬目信息類AcctItem 人員類和賬目類之間的連線描述了兩個(gè)類之間的關(guān)系 關(guān)系包括一個(gè)標(biāo)題PayAssoc揭示了兩者之間的關(guān)系是支付的關(guān)系 每個(gè)屬性 PayPerson 和 Pay 以及關(guān)系多重度因子 和 n 表明每個(gè)人可以完成多個(gè)賬目的收支 而每個(gè)賬目至少要有一個(gè)關(guān)聯(lián)的人員 同時(shí)類圖還描述了下面一些業(yè)務(wù)規(guī)則
一個(gè)人的信息要有名稱 賬目信息中包含收支金額大小 以及發(fā)生日期
上面的類圖如果使用關(guān)系型數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的話 需要建立主從表 并將人員和賬目之間的關(guān)聯(lián)約束通過(guò)應(yīng)用程序代碼強(qiáng)制一些運(yùn)行邏輯來(lái)完成 這時(shí)通常要通過(guò)補(bǔ)充詳細(xì)的文檔來(lái)描述需要強(qiáng)制的業(yè)務(wù)邏輯 如果沒(méi)有詳細(xì)的設(shè)計(jì)文檔 實(shí)現(xiàn)代碼時(shí)就很容易遺漏某些重要的商業(yè)規(guī)則 同時(shí)這些文檔在整個(gè)的數(shù)據(jù)庫(kù)開(kāi)發(fā)的生命周期里面都需要人來(lái)手工地維護(hù) 難免會(huì)出現(xiàn)文檔和模型不匹配的錯(cuò)誤 而且文檔的工作量比較大 而程序員數(shù)量又相對(duì)不足的話 程序員會(huì)覺(jué)得既要寫(xiě)代碼又要寫(xiě)文檔 無(wú)形中增加了很多工作量 難免會(huì)有抵觸情緒 這些都會(huì)影響工作的效率
對(duì)于這樣的問(wèn)題 Bold則通過(guò)精確描述信息模型 無(wú)須詳細(xì)規(guī)則描述文檔可以將模型自動(dòng)的轉(zhuǎn)變?yōu)閷?shí)現(xiàn)代碼 商業(yè)規(guī)則在整個(gè)數(shù)據(jù)庫(kù)開(kāi)發(fā)生命周期內(nèi)由Bold的類來(lái)維護(hù) 減少了文檔的工作量和出錯(cuò)的可能
建立示例程序
首先 我們要安裝Bold for Delphi Bold的一個(gè)月評(píng)估版可以從 boldsoft 獲取 同時(shí)D 的架構(gòu)版內(nèi)置了Bold 這里我就不詳細(xì)介紹申請(qǐng)和安裝的過(guò)程了 安裝好后Bold會(huì)在IDE的組件面板中添加很多組件 接下來(lái)我們就開(kāi)始建立使用Bold的Delphi程序了
在Delphi中選File|New Application創(chuàng)建一個(gè)新的應(yīng)用程序
保存窗體文件為MainForm pas保存工程文件為CMoney dpr
添加一個(gè)數(shù)據(jù)模塊 設(shè)定數(shù)據(jù)模塊的名字為DmMoney
將數(shù)據(jù)模塊保存為CDataModule pas
為了使用Bold來(lái)建立系統(tǒng)的信息模型 要進(jìn)行下列操作
從Bold Handles 組件頁(yè)上選擇BoldModal(命名為bmMoney) BoldSystemTypeInfoHandle(命名為bsthMoney)和BoldSystemHandle(命名為bshMoney)到數(shù)據(jù)模塊中
設(shè)定bsthMoney的BoldModal屬性為bmMoney
設(shè)定bshMoney的BoldSystemTypeInfoHandle 屬性為bsthMoney
其中BoldModel組件將被用來(lái)保存模型 即類 類的關(guān)系 約束以及類型等 這些信息將在設(shè)計(jì)時(shí)作為字符串保存到Delphi的窗體和數(shù)據(jù)模塊文件中 在運(yùn)行時(shí)Bold將執(zhí)行一些模型的中間轉(zhuǎn)換過(guò)程 將模型轉(zhuǎn)化為BoldSystemTypeInfoHandle控件所使用的格式 并選擇實(shí)現(xiàn)可持續(xù)性的機(jī)制
在設(shè)計(jì)時(shí)儲(chǔ)存在BoldModel組件中的信息模型可以被看做元數(shù)據(jù) 就象數(shù)據(jù)庫(kù)的庫(kù)表和字段結(jié)構(gòu)一樣的信息 而B(niǎo)oldSystemTypeInfoHandle組件則保存BoldSystemHandle所需要的運(yùn)行時(shí)信息 這些信息是對(duì)UML模型的一種運(yùn)行時(shí)的表達(dá) 這個(gè)組件是其他Bold組件的信息源 BoldSystemHandle組件則被用來(lái)表達(dá)整個(gè)系統(tǒng)的業(yè)務(wù)域元素 可以理解為對(duì)象空間 通過(guò)對(duì)象空間我們可以在運(yùn)行時(shí)獲得設(shè)計(jì)時(shí)元數(shù)據(jù)表達(dá)的對(duì)象的運(yùn)行實(shí)例 目前用到的三個(gè)控件已經(jīng)可以很好的應(yīng)用在不需要保存數(shù)據(jù)的環(huán)境中了 但賬目記錄這類數(shù)據(jù)庫(kù)程序必須要保存用戶輸入的信息 因此還需要添加支持?jǐn)?shù)據(jù)可持久性的控件 這里為了快速演示的需要 我們使用XML文件作為存儲(chǔ)介質(zhì) 接下來(lái)要添加X(jué)ML可持續(xù)控件到數(shù)據(jù)模塊中
從Bold Persistence組件頁(yè)上選擇BoldPersistenceHandleFileXML控件(命名為bphxMoeny)添加到數(shù)據(jù)模塊中
設(shè)定組件的BoldModel屬性為bmMoney控件
設(shè)定bshMoney組件的PersistenceHandle屬性為bphxMoeny組件
現(xiàn)在組件關(guān)系示意圖如下
BoldPersistenceHandleFileXML組件將使我們的程序可以使用XML文件來(lái)保存和讀取對(duì)象 這是一個(gè)使用很方便的控件 特別是在快速原型設(shè)計(jì)期間 因?yàn)樵谠驮O(shè)計(jì)期間 模型經(jīng)常會(huì)被改動(dòng) 而重新生成數(shù)據(jù)庫(kù)表是很費(fèi)時(shí)間的 而XML文件可以使我們非??斓淖兏覀兊哪P驮O(shè)計(jì) 當(dāng)模型基本穩(wěn)定后 可以去掉這個(gè)控件 轉(zhuǎn)而切換為其他使用關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)的可持續(xù)性控件 這樣的開(kāi)發(fā)方式可以使我們不需要改動(dòng)整個(gè)程序就能很容易地改變數(shù)據(jù)持續(xù)層的存儲(chǔ)策略 也就是前面所說(shuō)的 數(shù)據(jù)庫(kù)平臺(tái)無(wú)關(guān)設(shè)計(jì)
除了前面的一些基本的屬性設(shè)置外 我們還要設(shè)定下列控件屬性
組件 屬性 值 說(shuō)明 bsthMoney UseGeneratedCode false 是否使用bold生成類代碼 這里暫時(shí)先不使用 稍后我們會(huì)進(jìn)一步介紹 bphxMoeny FileName Data xml 指定保存數(shù)據(jù)的xml文件名 bshMoney AutoActivate true 告訴Bold控件在程序運(yùn)行后馬上打開(kāi)xml文件用于數(shù)據(jù)存儲(chǔ)
建立模型
下面的步驟是建立我們的模型 Bold for Delphi內(nèi)置了一個(gè)樹(shù)形的UML建模工具(應(yīng)該說(shuō)Bold美中不足的一點(diǎn)就是沒(méi)有提供象Visio和Rose那樣基于拖放的模型設(shè)計(jì)界面) 我們可以雙擊BoldModel(bmMoney)組件調(diào)出模型設(shè)計(jì)工具 bold UML模型編輯器(見(jiàn)下圖)包含了應(yīng)用程序模型信息 數(shù)據(jù)類型信息和關(guān)系數(shù)據(jù)庫(kù)映射信息
模型編輯器支持下列實(shí)體類型
Model: 模型 全部業(yè)務(wù)域?qū)嶓w
Package: 包 整個(gè)模型的一個(gè)子集所包含的實(shí)體 可以將大模型分解為小模型來(lái)減少系統(tǒng)復(fù)雜度
Class:類 類似于Delphi的類的概念(Delphi的類可以從UML的類來(lái)生成) 但包含Object Pascal無(wú)法直接描述的類的信息和相互關(guān)系 Bold框架通過(guò)關(guān)聯(lián)類和特殊的列表類封裝了一些額外的功能使得我們可以很容易的處理復(fù)雜的類關(guān)系
Attribute: 屬性 類似于Delphi中的property概念 然而在Bold中 這些屬性可以在模型中直接保存而無(wú)需我們編寫(xiě)屬性的Get Set方法
Operation: 操作 等價(jià)于Delphi中的類的過(guò)程和函數(shù)
Association: 關(guān)聯(lián) 代表了類之間的關(guān)系 關(guān)聯(lián)可以使用類來(lái)表達(dá) 關(guān)聯(lián)也可以有操作和屬性 在Bold中建立關(guān)聯(lián)的復(fù)雜工作同樣可以由框架來(lái)實(shí)現(xiàn) 我們無(wú)須編寫(xiě)代碼來(lái)完成
Role: 角色 代表關(guān)聯(lián)同類的連接
Data Type: 表示模型所支持的不同數(shù)據(jù)類型 它可以被擴(kuò)展以支持用戶自定義的數(shù)據(jù)類型
下圖是不同實(shí)體類型在模型編輯器中是如何標(biāo)識(shí)的
所有的實(shí)體類型都可以通過(guò)編輯器的右鍵菜單來(lái)創(chuàng)建和修改屬性 同時(shí)我們選中實(shí)體節(jié)點(diǎn)后 實(shí)體和全局的選項(xiàng)會(huì)顯示在右側(cè)的編輯器中 其中重要的有
Name: 模型的名稱
lishixinzhi/Article/program/Delphi/202311/24785
關(guān)于delphi數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)…的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營(yíng)銷推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。
網(wǎng)站標(biāo)題:Delphi數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)指南:靈活、高效、可靠 (delphi數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)…)
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dhsjegi.html


咨詢
建站咨詢
