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