Delphi是著名的Borland公司開發的可視化軟件開發工具。有這樣一句話最為經典、貼切的描述了Delphi——“真正的程序員用C,聰明的程序員用Delphi”。很多人把Delphi稱為是第四代編程語言,它具有簡單、高效、功能強大等特點。和Visual C++比較,Delphi更簡單、更易於學習掌握,而在功能上卻毫不遜色;和Visual Basic相比,Delphi則功能更強大、更實用。可以說,Delphi兼備了VC和VB的特點,所以一直是廣大程序員喜愛的編程工具。
下面,我們將分期向大家簡單介紹Delphi的特點、常用組件,以及利用Delphi開發數據庫程序的方法和步驟。
發展至今,從Delphi 1、Delphi 2到現在的Delphi 7、Delphi 8(Borland Delphi .Net),Delphi不斷擴展和改進著自身的功能、特點和優勢。Delphi提供了各種開發工具,包括集成環境、圖像編輯(Image Editor),以及各種開發數據庫的應用程序,如Database Desktop等。而且,還允許用戶掛接其他的應用程序開發工具,如Borland公司的資源編輯器(Resourse Workshop)。
在Delphi眾多的優勢當中,它在數據庫方面的特長顯得尤為突出:適用於多種數據庫結構,從客戶機/服務機模式到多層數據結構模式;高效率的數據庫管理系統和新一代更先進的數據庫引擎;最新的數據分析手段和提供大量的企業組件。
首先,我們來簡單了解一下Delphi是如何存取數據庫的。
Delphi對數據庫的操作主要是利用BDE(數據庫引擎,Borland Database Engine的縮寫)來進行。當然,通過其他方式直接訪問數據庫,在Delphi中也都是可以實現的。不過,對於本地數據庫來說,通過BDE存取數據效率很高。對本地數據庫如果能夠熟練操作,編寫網絡數據庫也就容易上手了。尤其對初學者來說,寫網絡數據庫的機會還是不如單機本地數據庫多。所以,我們把重點放在本地數據庫上。
BDE是負責用戶和數據庫交流的中間媒介。事實上,應用程序是通過數據訪問組件和BDE連接,再由BDE去訪問數據庫,完成對數據庫的操作,而並非直接操作BDE。這樣用戶只需關心Delphi中的數據組件即可,不用直接和BDE打交道。
數據庫組件主要分為兩類:“數據訪問組件”和“數據控制組件”,它們和數據庫的關系可用下面的關系圖來示意:
通過BDE,幾乎可以操作目前所有類型的數據庫。接下來,簡單介紹一下Delphi中常用的數據庫組件。
1. 數據訪問組件(Data Access Component)
數據訪問組件在Delphi組件面板的Data Access組件頁上可以找到。這裡我們應當注意:Table、Query和Storedproc三個控件,它們稱為“數據集組件”,用於和數據庫連接。學習者可以將這些控件視為“虛擬”的數據庫,對它們的操作就可以認為是對數據庫的操作。
(1)DataSource控件是數據集組件和數據控制組件的連接媒介。數據控制組件是用戶操作數據庫中數據的界面,只有通過DataSource控件才能和數據集組件連接,從而對數據進行顯示、修改、維護等操作。
(2)Table控件是通過數據庫引擎——BDE來存取數據庫中的數據的。通過BDE將用戶對數據庫的操作(如添加、刪除、修改等)傳遞給數據庫。
(3)Query控件是利用SQL(Structured Query Language,結構化查詢語言)通過BDE來操作數據庫的,和Table控件完成的功能相似,它只是采用了SQL來實現。
(4)Storedproc控件是通過BDE對服務器數據庫進行操作的,常用於客戶/服務器(C/S)結構的數據庫應用程序。
(5)DataBase控件一般用於建立遠程的數據庫服務器——客戶/服務器結構的數據庫應用程序和數據庫之間的連接。
(6)Session控件是用於控制數據庫應用程序和數據庫連接的,主要用於復雜功能的實現,例如:多線程數據庫程序設計。
2. 數據控制組件(Data Control Component)
數據控制組件也可以稱為數據顯示組件或數據浏覽組件。它們的主要功能是與數據訪問組件相配合,提供給用戶一個對數據進行浏覽、編輯等操作的界面。數據控制組件在組件板上的DataControl頁上。它們主要有:DBGrid控件、DBNavigator控件、DBText控件、 DBEdit控件、DBMemo控件、DBImage控件、DBListbox控件、DBComboBox控件、DBCheckBox控件、 DBRadioGroup控件、DBLookupListBox控件、DBLookupComboBox控件、DBRichEdit控件、 DBCtrlGrid控件、DBChart控件等。
此外,還有一些組件與數據庫有關。例如,Decision Cube是一組主要用於數據統計工作的控件,以表格或圖形等直觀的方式表達統計結果。QReport是用來輸出報表的控件,但是,根據經驗來看,此控件不太適合中國人報表的習慣。此組件是Borland公司購買而來,性能不是太好,所以現在使用的不是很多。目前,有一些第三方控件提供的報表控件很好用,也有一些國人自己制作的報表控件,很適合中國人的習慣。
還有一個組件頁是ADO(ActiveX Data Objects),主要是使用微軟的OLE DB功能對數據庫服務器中的數據進行訪問和操作。其主要優點是易於使用、高速度、低內存支付和存儲空間占用較少。ADO支持用於建立基於客戶端/服務器和基於Web的應用程序。ADO同時具有遠程數據服務(RDS)功能,通過RDS可以在一次往返過程中實現將數據從服務器移動到客戶端應用程序或Web頁、在客戶端對數據進行處理然後將更新結果返回服務器的操作。ADO現在逐漸流行起來,ADO本身也很復雜,微軟有專門的幫助文件來說明如何使用ADO,學習者有興趣可以找相關資料進一步學習。
編寫程序
在上面的准備工作做完之後,應該說,萬裡長征已走完了三分之一。因為有了明確的程序流程、有了基本充足的編程資源、可能碰到的難點都找到了解決方案,可謂“萬事俱備,只欠東風”!由於事先准備的比較充分,即使以後程序的編寫過程中可能還會碰到一些困難,但畢竟不會成為“攔路虎”的狀況,我們需要做的就是拿出一大塊時間,靜下心來認真按照方案和流程來編寫程序了。這裡說明一點,在寫程序之前應該首先建立空白數據庫,當然也可以在設計方案時建立數據庫,也可以在完成前面的五個步驟之後在正式寫程序之前建立空白數據庫。
編寫數據庫程序的幾點建議
由於數據庫程序和用戶的交互功能較多,用戶需要輸入的數據量大,所以必須充分考慮到程序的錯誤處理,對用戶可能出現的輸入錯誤要充分考慮並在程序中盡量及時給出提示。
在保存時對輸入數據進行校驗,防止一些非法數據保存到數據庫中,導致以後的統計、查詢出現錯誤。
程序要寫的穩定性好、容錯能力強是很不容易的,從經驗來看,很大一部分精力都用在防止出錯、使得程序能穩定運行方面。
在完成一個功能模塊的代碼編寫後要立即進行調試,調試通過後再編寫另外一個功能的代碼,這樣可以防止代碼都編寫完畢再調試是因為可能帶來的相互影響而弄不清除到底哪部分代碼出現問題。
代碼中關鍵的地方要加些注釋,以防以後自己都看不懂當初是怎麼寫的了。將程序代碼做好備份,做好“災難恢復”的准備。