精通數(shù)據(jù)庫(kù)系列之入門(mén)-技巧篇4

字號(hào):

數(shù)據(jù)庫(kù)編程示例  
    在本次講座中,我們以Delphi5為開(kāi)發(fā)工具,標(biāo)準(zhǔn)的paradox表為后臺(tái)數(shù)據(jù)庫(kù),來(lái)向大家介紹如何進(jìn)行最簡(jiǎn)單的數(shù)據(jù)庫(kù)編程。在本例中,我們將實(shí)現(xiàn)對(duì)一個(gè)數(shù)據(jù)表單的添加、修改、刪除以及對(duì)表中數(shù)據(jù)進(jìn)行查詢(xún)的功能。
    本例所使用的計(jì)算機(jī)軟硬件環(huán)境為:Windows NT 4.0 Server,Borland Delphi 5,PIII550,256M內(nèi)存。當(dāng)然啦,一般的朋友在Win98的環(huán)境下或者Win2000的環(huán)境下都可以按照本例的步驟來(lái)編程序的。筆者的機(jī)器主要用作服務(wù)器,所以就在服務(wù)器上編啦。廢話少說(shuō),現(xiàn)在開(kāi)始:
    在正式編寫(xiě)程序之前要有許多準(zhǔn)備工作,這當(dāng)然包括Borland Delphi 5的安裝。Delphi5自身帶了對(duì)標(biāo)準(zhǔn)數(shù)據(jù)表paradox的驅(qū)動(dòng)(和一些fox系列數(shù)據(jù)庫(kù)軟件的.db文件是兼容的,這些文件都可以由Delphi直接讀?。?。
    程序編寫(xiě)的第一步首先是數(shù)據(jù)表(即.db文件)的建立。在這一步要用到Delphi自帶的一個(gè)工具叫Database Desktop。這個(gè)工具主要用來(lái)對(duì)表格進(jìn)行操作,它不僅可以操作像.db文件這樣的標(biāo)準(zhǔn)表格,還可以訪問(wèn)像Oracle、SQL Server等大型數(shù)據(jù)庫(kù)的文件,功能可以說(shuō)是很強(qiáng)大的。打開(kāi)Database Desktop,選擇File-New-Table,然后選擇paradox7,出現(xiàn)如下界面:
      
    在FieldName里面填寫(xiě)你要建立的表單的屬性名稱(chēng),如圖所示,本例中要建立的是人員管理表,所以建立的屬性為編號(hào)、姓名、性別、工作單位、工資、備注等。除工資之外的屬性都是字符串類(lèi)型,即圖中Type項(xiàng)所選擇的A(Alpha),而Size則是指的字符串的長(zhǎng)度,屬性值的長(zhǎng)度是根據(jù)屬性的具體意義來(lái)確定的,例如“性別”選擇只有“男”和“女”,一個(gè)漢字的長(zhǎng)度,那么性別屬性的長(zhǎng)度設(shè)置成2就可以了(一個(gè)漢字等于兩個(gè)字符的長(zhǎng)度)。而工資屬性是數(shù)值類(lèi)型的,在paradox中用Number來(lái)標(biāo)記,即和前面對(duì)應(yīng)的一個(gè)“N”。屬性設(shè)置完畢后,選擇Save As存盤(pán)。本例中,所建立的數(shù)據(jù)表格的存放路徑和文件名為:D:\Program Files\Borland\Database Desktop\WorkDir\ryb.db(人員表)?! ?BR>    這樣就完成了第一步,這一步只是編程之前的準(zhǔn)備工作,也是后面針對(duì)這個(gè)表單編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序的基礎(chǔ)。下面要進(jìn)行的就是實(shí)際的程序編寫(xiě)了,請(qǐng)打開(kāi)Borland Delphi 5。  
    在缺省的Form1上放置這樣一些控件(控件的位置就不用俺再羅嗦了吧?):TdataBase、Ttable、TdataSourse、TdbGrid、Tlabel、TdbNavigator。按照你喜歡的界面風(fēng)格來(lái)放置這些控件,如下圖本例中的控件放置:
      
    下一步就是控件屬性的設(shè)置啦,這一步也是本例中最關(guān)鍵的一步,因?yàn)樵S多網(wǎng)友對(duì)使用前端開(kāi)發(fā)工具對(duì)后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行編程比較生疏,也就是在這個(gè)地方。
    我們將Tdatabase的DataBaseName屬性設(shè)置成Mydb(這個(gè)名字可以隨便起),drivername為STANDARD(表明驅(qū)動(dòng)的是paradox表),params屬性為path=D:\Program Files\Borland\Database Desktop\WorkDir(存放.db文件的路徑,前面已經(jīng)提到),connected設(shè)為true(和數(shù)據(jù)表建立起連接),其他屬性使用缺省值就可以了?! ?BR>    然后將Table的Databasename屬性設(shè)為Mydb(即Database1的DataBaseName屬性),tablename為ryb.db(即數(shù)據(jù)表的名字)Active屬性設(shè)置為T(mén)rue(打開(kāi)表單,便于編寫(xiě)程序)?! ?BR>    接著將Datasourse1的dataset屬性設(shè)為為T(mén)able1(Ttable的name屬性值)。另外DBNavigator1和DbGrid1的datasourse屬性都設(shè)為datasourse1。Tlabel的caption屬性設(shè)為“數(shù)據(jù)庫(kù)編程示例”,如圖所示(可以根據(jù)個(gè)人喜好修改字體,使它變得好看一些)?! ?>這樣控件的屬性就設(shè)置完畢了,注意到dbgrid里面的“編號(hào)”、“姓名”等欄都是數(shù)據(jù)表中的屬性,在ryb.db里面定義,而不是在前端的delphi程序里面定義。點(diǎn)擊run按鈕之后,這個(gè)簡(jiǎn)單的程序就運(yùn)行了(見(jiàn)下圖)?! ?>這是通過(guò)Dbnavigator上的按鈕就可以控制對(duì)表單進(jìn)行數(shù)據(jù)的添加、刪除、修改了(將DbNavigator的ShowHint屬性改為T(mén)rue的話可以在運(yùn)行時(shí)看到各個(gè)按鈕的提示)?!?BR>    至此,我們實(shí)現(xiàn)了使用Delphi這種快速開(kāi)發(fā)工具編寫(xiě)簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用程序, 細(xì)心的讀者可能注意到了,到目前為止連一行程序都沒(méi)有寫(xiě),確實(shí)是這樣,這就是第四代程序設(shè)計(jì)語(yǔ)言(可視化的編程語(yǔ)言)給我們帶來(lái)的好處。當(dāng)然啦,要編寫(xiě)比較復(fù)雜的程序不寫(xiě)代碼是不可能的,下面我們將在上面的基礎(chǔ)上實(shí)現(xiàn)查詢(xún)的功能,并給大家附上源程序。在Form增加如下控件:一個(gè)Tquery、一個(gè)Tbutton、4個(gè)Tlabel、2個(gè)Tedit。并將Tlabel的屬性進(jìn)行下圖所示的修改(新增加的控件都在黑色方框中):                     
    將Query1的DataBaseName屬性也設(shè)置成MyDb(和Table一樣),SQL屬性中寫(xiě)入Select* from ryb,RequestLive設(shè)為T(mén)rue(這樣可以對(duì)Query里面的數(shù)據(jù)進(jìn)行修改),然后將Active屬性設(shè)為T(mén)rue。最后將DataSourse1的DataSet屬性改為query1(此時(shí)Table1控件可以從Form上去掉了)?! ?BR>    雙擊Button1,在程序編輯器里面寫(xiě)入如下代碼:  
    Query1.close;  
     Query1.Sql.clear;
     Query1.SQL.Add(Select * from ryb);  
     Query1.sql.add(where 姓名 like :xm and 工資 > :gz);  
     Query1.ParamByName(xm).asstring:=%+Edit1.text+%;  
    If (Edit2.text<>’’)then  
     Query1.ParamByName(gz).value:=strtofloat(Edit2.text);  
     Query1.prepare;  
     Query1.open;   >
     這樣就完成了查詢(xún)代碼的編寫(xiě),具體各條語(yǔ)句所引用的函數(shù)的含義大家可以參考Delphi的幫助文檔,在此就不作贅述了。另外在編寫(xiě)查詢(xún)程序時(shí),涉及到一些關(guān)于數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言SQL的知識(shí),在后面的文章中我們將有比較詳細(xì)的介紹?! ?>此時(shí)再執(zhí)行這個(gè)程序,就編程的具有查詢(xún)功能的數(shù)據(jù)庫(kù)程序。在Edit1和Edit2中輸入相應(yīng)的查詢(xún)條件,然后點(diǎn)擊Button1(確定),程序就執(zhí)行相應(yīng)的查詢(xún)操作,查詢(xún)到的結(jié)果將在DBGrid1中顯示?! ?BR>    到此為止,我們就實(shí)現(xiàn)了使用Borland Delphi5操縱paradox數(shù)據(jù)表的程序示例,當(dāng)然,這個(gè)程序是非常簡(jiǎn)單的,它實(shí)現(xiàn)的只是數(shù)據(jù)庫(kù)操作的最基本功能。而且這個(gè)程序只是在單擊環(huán)境下運(yùn)行的,在設(shè)計(jì)的時(shí)候,我們還不需要考慮一些例如并發(fā)性的問(wèn)題?,F(xiàn)在比較成熟的是在客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)下和瀏覽器/服務(wù)器下對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,而且隨著網(wǎng)絡(luò)功能的加入,許多新的問(wèn)題也帶入進(jìn)來(lái),在后面我們將舉這方面的例子,請(qǐng)大家靜候佳音吧!