国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
第一講 Delphi操作數(shù)據(jù)庫基礎(chǔ)(上)
第一講 Delphi操作數(shù)據(jù)庫基礎(chǔ)(上)
日期:2005年3月29日 作者:心鈴 人氣: 5345 查看:[大字體 中字體 小字體]

一、引言

    編程學(xué)苑—Delphi專題講座從本期開始了,心鈴在此先談?wù)勛约旱囊恍┫敕ā哪瓿踅拥截?zé)任編輯的約稿之后,心鈴一直在琢磨如何寫好本次Delphi專題講座,同時也參考、學(xué)習(xí)以前幾位心鈴的專題講座的風(fēng)格。從專題的選擇來說,心鈴最終選擇了“數(shù)據(jù)庫”這個專題,一是心鈴業(yè)余時間主要是寫數(shù)據(jù)庫程序的,寫數(shù)據(jù)庫專題比較熟悉;二是數(shù)據(jù)庫的應(yīng)用是目前最廣泛的,據(jù)統(tǒng)計約60%以上的應(yīng)用軟件都是與數(shù)據(jù)庫有關(guān)的。心鈴希望這次Delphi數(shù)據(jù)庫專題講座能起到拋磚引玉的作用,使得讀者能通過本次講座學(xué)習(xí)到如何編制一個完整的數(shù)據(jù)庫應(yīng)用程序,并在自己的工作、學(xué)習(xí)中得到應(yīng)用。

    現(xiàn)在有關(guān)Delphi數(shù)據(jù)庫編程的書籍、資料也很多,心鈴不想東拼西湊地抄、搬一些資料來胡弄讀者,不想按照它們的如先講數(shù)據(jù)庫組件最后以一個例子來結(jié)束等風(fēng)格來寫本次講座,也不能面面俱到地講解每個數(shù)據(jù)庫組件的屬性、方法和事件,因為這些知識大部分都是重復(fù)幫助文件的內(nèi)容,再者有些講了也沒多大用途,讀者可根據(jù)需要隨時從幫助文件中獲取,心鈴不想浪費寶貴的版面。本次講座將以一個稍微復(fù)雜一點的數(shù)據(jù)庫應(yīng)用程序為主線,將用到的數(shù)據(jù)庫組件及有關(guān)知識穿插講解,盡量做到覆蓋面廣一些,同時在講座中間可能插入一些小例子或技巧來講解一些組件重要的屬性、事件和方法等。所以,如果您習(xí)慣了一些書籍的編寫風(fēng)格,可能會感到本次講座在組織形式上有點亂,但如果您能跟著講座堅持學(xué)習(xí),相信您會有所收獲。

    本次講座計劃涉及的主要內(nèi)容是:以本地數(shù)據(jù)庫為主,介紹通過BDE存取數(shù)據(jù)庫;通過ODBC、ADO操作數(shù)據(jù)庫;SQL在數(shù)據(jù)庫中的應(yīng)用;數(shù)據(jù)庫程序的安裝制做;如果時間、版面允許會介紹一下SQL SERVER。這只是一個計劃,將根據(jù)讀者反饋意見、編輯要求、時間或版面的情況進(jìn)行適當(dāng)調(diào)整。本講座以目前使用廣泛的Delphi 5.0企業(yè)版為編程環(huán)境,雖然Delphi6.0已發(fā)行,心鈴的電腦中也安裝了,但可能目前用的讀者還不是太多,如果您用的是6.0版或4.0版,應(yīng)該都是可以的,只不過有些數(shù)據(jù)庫組件所在組件面板的位置不一樣。順便說一下,寫本次講座的心鈴只是一個業(yè)余Delphi愛好者,非專職程序員,對Delphi的學(xué)習(xí)不是面面面俱到,對比較熟悉的內(nèi)容也達(dá)不到非常精通的水平,所以本講座不適合高水平的讀者,適于初級和中級水平的讀者閱讀,在講座中可能會有一些錯誤之處,希望廣大讀者能及時指出,心鈴在得到提高的同時也能使其他讀者得到正確的信息。

    心鈴盡量將一些關(guān)鍵之處講解詳細(xì),使讀者能理解和明白,希望讀者能及時提出建議、意見,將本次講座辦好,不辜負(fù)編輯的信任和讀者的期望。心鈴信箱:xinling@sweek.com,隨時準(zhǔn)備接受您的意見、建議或其他問題。閱讀本講座的讀者應(yīng)已具備數(shù)據(jù)庫的基本知識,如數(shù)據(jù)表、字段、字段類型、索引等概念,對delphi本身應(yīng)該具備初級水平。

下面心鈴先談?wù)勅绾螌懸粋€數(shù)據(jù)庫程序。

二、如何寫一個數(shù)據(jù)庫程序

   心鈴非計算機(jī)專業(yè)科班出身,沒學(xué)過軟件工程等之類的課程,這里只能從經(jīng)驗來談?wù)勅绾尉帉懸粋€數(shù)據(jù)庫程序。當(dāng)然這里的有些經(jīng)驗也適用寫其他的程序。

第一、首先應(yīng)做一個方案。也可以說是一個計劃、大綱之類的東西吧,在方案中首先要根據(jù)自己或客戶的的需要把主要應(yīng)具備的功能寫清除、寫詳細(xì),這是很最關(guān)鍵的,否則在設(shè)計完成后發(fā)現(xiàn)有些功能由于事先沒有考慮周到再重新設(shè)計將會很麻煩的,可能有些需增加的功能容易補(bǔ)充,而有些可能由于沒有留下接口等等會造成將原來的代碼要做大量修改。其次,列出需要的輔助功能和其他一些通用功能。比如,對電腦和數(shù)據(jù)庫不熟悉的客戶一般不會提出數(shù)據(jù)庫壓縮、整理之類的功能,但我們在程序設(shè)計中應(yīng)該考慮這些功能,還有如數(shù)據(jù)庫備份、恢復(fù)功能等;通用的一些功能如幫助文件、關(guān)于本程序等等,這些一般是任何軟件都應(yīng)該有的。最后,將數(shù)據(jù)庫結(jié)構(gòu)構(gòu)建出來。根據(jù)需要完成的功能,選擇什么樣的數(shù)據(jù)庫,數(shù)據(jù)庫應(yīng)有幾個數(shù)據(jù)表,每個數(shù)據(jù)表應(yīng)該具備多少字段,字段的類型、長度、是否允許空值,是否建立索引等都要寫清除。

第二、設(shè)計初步程序流程。根據(jù)要完成的功能,將大致的程序流程寫出來,每個功能都要寫出基本流程,主要是為以后的程序編寫起到一個指導(dǎo)作用,當(dāng)然,在實際寫程序的過程中可能會有很多改動,但一個基本的流程會指導(dǎo)你在寫程序時不會出現(xiàn)大的偏差。

第三、準(zhǔn)備所需資料。這里主要指的是編程所需資料,根據(jù)方案需要完成的功能分析可能需要哪些方面的資料,對非專職程序員來說,有些資料是不太可能記的非常牢,在寫程序時經(jīng)常需要參考一些資料或以前編寫的程序代碼,把這些都找來,放在一個專用文件夾中(電子版)或放在案頭(紙介質(zhì)類),以便于在需要時能及時查閱。當(dāng)然,如果客戶提供的資料需要在編程中使用,當(dāng)然更要準(zhǔn)備好。另外,要考慮是否有一些功能單靠編程軟件自身不好完成需要使用第三方組件或其他輔助工具,如果需要把這些組件和工具也準(zhǔn)備好。

第四、設(shè)計初步界面。根據(jù)要完成的功能,在紙上設(shè)計一個大致的界面,考慮可能用到的菜單、工具欄、狀態(tài)條,采用獨立的窗口還是MID窗口介面等,這里無需很細(xì)致的界面,因為在實際寫程序中介面常常根據(jù)需要進(jìn)行調(diào)整,這里只是設(shè)計一個輪廓。

第五、分析難點及解決方案。即使對一個編程高手來說,寫一個程序也會碰到一些比較困難之處。為了能比較順利完成程序設(shè)計,最好根據(jù)所需功能和程序流程來對整個程序框架分析一下,根據(jù)自己掌握的知識、技能來找出某些困難之處,并找到解決方法。比如,對于比較復(fù)雜的查詢,可能用一條SQL語句查詢得不到所需結(jié)果,你就需要分析一下如何能完成這個功能,是否采用臨時數(shù)據(jù)表來實現(xiàn),如果需要使用臨時數(shù)據(jù)表,那么如何將數(shù)據(jù)導(dǎo)出到臨時表中,這樣的SQL語句如果還不會寫,那么馬上查查資料看看如何實現(xiàn),最好找一個臨時數(shù)據(jù)庫來寫幾句代碼驗證一下看能否解決,如果解決了,可將代碼作為資料保存?zhèn)溆?。這樣通過分析,將所有可能成為難點之處都找出來并找到了解決方法后,在以后程序的編寫過程中雖然可能達(dá)不到一氣呵成的程度,也應(yīng)該比較順利,總比在編程中碰到一個難點好幾天都無法解決而停下來要好吧!心鈴喜歡寫程序時能一口氣完成一個功能,這樣思路流暢,寫起來效率高,如果中間老是間斷就沒有心情了。當(dāng)然這只是心鈴的習(xí)慣做法,可能有的讀者并不喜歡這種風(fēng)格。

第六、開始寫程序。在上面的準(zhǔn)備工作做完之后,應(yīng)該說,到這里萬里長征已走完了三分之一,或者說走完了一半都不夸張。因為有了明確的程序流程、有了基本充足的資料、可能碰到的難點都找到了解決方案,我們還怕什么呢?由于事先準(zhǔn)備的比較充分,即使以后程序的編寫過程中可能還會碰到一些困難之處,但畢竟不會出現(xiàn)很多攔路虎了,我們需要的就是拿出一大塊時間,靜下心來認(rèn)真按照方案和流程來寫程序了。這里說明一點,在寫程序之前應(yīng)該首先建立空白數(shù)據(jù)庫,當(dāng)然可以在設(shè)計方案時同時建立數(shù)據(jù)庫,也可以在完成前面的五步之后在正式寫程序前建立空白數(shù)據(jù)庫。

    寫程序的幾點建議:由于數(shù)據(jù)庫程序和用戶的交互功能較多,用戶需要輸入的數(shù)據(jù)很多,所以必須充分考程序的錯誤處理,對用戶可能出現(xiàn)的輸入錯誤要充分考慮并在程序中盡量及時給出提示,在保存時對輸入數(shù)據(jù)進(jìn)行校驗,防止一些非法數(shù)據(jù)保存到數(shù)據(jù)庫中,導(dǎo)致以后的統(tǒng)計、查詢出現(xiàn)錯誤。程序要寫的非常健壯是很不容易的,從心鈴寫數(shù)據(jù)庫程序的經(jīng)驗來看,很大一部分精力都用在防止出錯、使得程序能健壯運行方面。一般在完成一個功能的代碼編寫后立即進(jìn)行調(diào)試,通過后再編寫另外一個功能的代碼,這樣可防止代碼都編寫完畢再調(diào)試可能帶來的相互影響而弄不清除到底哪部分代碼有問題。代碼中關(guān)鍵的地方要加些注釋,以防以后自己都看不懂當(dāng)初是怎么寫的了。將程序代碼做好備份,免得萬一來一次災(zāi)難而痛心疾首為什么沒及時備份代碼。

    關(guān)于如何寫一個數(shù)據(jù)庫程序就先談這么多吧,以后在講座中還會結(jié)合例子講一些,這里是僅供參考的幾點建議。

三、Delphi是如何操作數(shù)據(jù)庫的?

    我們先來簡單了解一下Delphi是如何存取數(shù)據(jù)庫的。Delphi操作數(shù)據(jù)庫主要是利用BDE(數(shù)據(jù)庫引擎)來進(jìn)行,當(dāng)然通過其他方式繞過BDE直接訪問數(shù)據(jù)庫在Delphi中也都可以實現(xiàn),不過,對于本地數(shù)據(jù)庫來說,通過BDE存取數(shù)據(jù)效率還是很高的。本地數(shù)據(jù)庫如果能熟練操作的話,編寫網(wǎng)絡(luò)數(shù)據(jù)庫也很容易上手了,對普通讀者來說,寫網(wǎng)絡(luò)數(shù)據(jù)庫的機(jī)會還是不如單機(jī)本地數(shù)據(jù)庫多,所以,本次講座的重點還是以本地數(shù)據(jù)庫為主。

    BDEBorland Database Engine的縮寫,它是負(fù)責(zé)用戶和數(shù)據(jù)庫打交道的中間媒介。事實上,應(yīng)用程序是通過數(shù)據(jù)訪問組件和BDE連接,再由BDE去訪問數(shù)據(jù)庫來完成對數(shù)據(jù)庫的操作的,并非直接操作BDE。這樣用戶只需關(guān)心數(shù)據(jù)組件即可,不用去直接和BDE打交道。數(shù)據(jù)庫組件主要有數(shù)據(jù)訪問組件和數(shù)據(jù)控制組件,它們和數(shù)據(jù)庫的關(guān)系可用下面的示意圖來表示:

  用戶←→數(shù)據(jù)控制組件←→數(shù)據(jù)訪問組件←→BDE←→數(shù)據(jù)庫

通過BDE幾乎可以操作目前所有類型的數(shù)據(jù)庫。我們來簡單了解一下常用的數(shù)據(jù)庫組件。

(一)數(shù)據(jù)訪問組件(Data Access Component

     數(shù)據(jù)訪問組件在組件面板的Data Access組件頁上,在這里我們簡單介紹一下,Table、QueryStoredproc三個組件也稱為數(shù)據(jù)集組件,用于和數(shù)據(jù)庫連接,讀者可將這些組件視為數(shù)據(jù)庫,對它們的操作就可認(rèn)為是對數(shù)據(jù)庫的操作。

DataSource組件是數(shù)據(jù)集組件和數(shù)據(jù)控制組件的連接媒介。數(shù)據(jù)控制組件是用戶操作數(shù)據(jù)庫中數(shù)據(jù)的界面,只有通過DataSource才能和數(shù)據(jù)集組件連接,從而獲得數(shù)據(jù)用來進(jìn)行顯示、修改等操作。

Table組件是通過數(shù)據(jù)庫引擎BDE來存取數(shù)據(jù)庫中的數(shù)據(jù)的,并通過BDE將用戶對數(shù)據(jù)庫的操作如添加、刪除、修改等傳遞回數(shù)據(jù)庫,這是非常重要的一個組件。

 Query組件是利用結(jié)構(gòu)化查詢語言(Structured Query Language)通過 BDE來操作數(shù)據(jù)庫的,和Table組件完成的功能基本一樣,只是采用了SQL來實現(xiàn),是重要的組件之一 。

Storedproc組件是通過 BDE對服務(wù)器數(shù)據(jù)庫進(jìn)行操作的,常用于客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序。

DataBase組件一般用于建立遠(yuǎn)程的數(shù)據(jù)庫服務(wù)器--客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫之間的連接。

Session組件是用于控制數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫連接的,主要用于復(fù)雜的功能,比如多線程數(shù)據(jù)庫程序編程。

BatchMove組件 用于大批數(shù)據(jù)的轉(zhuǎn)移、復(fù)制等。

UpdateSQL組件專用于只讀數(shù)據(jù)庫,用于緩存數(shù)據(jù)庫的更新。

NestedTable組件通過BDE操作嵌套數(shù)據(jù)庫(一個數(shù)據(jù)庫作為一個字段保存在另一個數(shù)據(jù)庫中),和Table組件類似,心鈴沒用過嵌套數(shù)據(jù)庫,所以對此組件沒有任何使用經(jīng)驗。

 

(二)數(shù)據(jù)控制組件(Data Control Component

    數(shù)據(jù)控制組件也可稱為數(shù)據(jù)顯示組件或數(shù)據(jù)瀏覽組件。它們的主要功能是和數(shù)據(jù)訪問組件配合供用戶對數(shù)據(jù)進(jìn)行瀏覽、編輯等操作。數(shù)據(jù)控制組件在組件板上的DataControl頁上,共有15個組件。它們分別是: DBGrid組件、DBNavigator組件、DBText組件、DBEdit組件、DBMemo組件、DBImage組件、DBListbox組件、DBComboBox組件、DBCheckBox組件、DBRadioGroup組件、DBLookupListBox組件、DBLookupComboBox組件、DBRichEdit組件、DBCtrlGrid組件、DBChart組件。這些組件使用起來都不復(fù)雜,有幾個稍復(fù)雜一點的以后將會講解。這里就不再逐個解釋了。

    另外還有一些組件與數(shù)據(jù)庫有關(guān)。Decision Cube是一組主要用于統(tǒng)計的組件,可以表格或圖形等直觀的方式表達(dá)統(tǒng)計結(jié)果,不過,似乎應(yīng)用的不是很廣泛。QReport 組件是用來最后輸出報表的組件,從很多用戶的反應(yīng)情況來看,此組件不太適合中國人報表的習(xí)慣,此組件是Borland從別的公司購買的,性能上不是太好,所以現(xiàn)在用的不是太多,另有一些第三提供的報表組件很好用,也有一些國人做的報表組件,很適合中國人的習(xí)慣,所以如果最后版面允許的話,將簡單介紹一下這些組件的使用。

    還有一個組件頁是ADOActiveX Data Objects),主要是使用微軟的 OLE DB 功能對在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行訪問和操作。其主要優(yōu)點是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ADO 支持用于建立基于客戶端/服務(wù)器和 Web 的應(yīng)用程序的主要功能。ADO 同時具有遠(yuǎn)程數(shù)據(jù)服務(wù) (RDS) 功能,通過 RDS 可以在一次往返過程中實現(xiàn)將數(shù)據(jù)從服務(wù)器移動到客戶端應(yīng)用程序或 Web 頁、在客戶端對數(shù)據(jù)進(jìn)行處理然后將更新結(jié)果返回服務(wù)器的操作。ADO現(xiàn)在逐漸流行起來,ADO本身也是很復(fù)雜的,微軟有專門的幫助文件來解釋如何使用ADO,本講座將會用一些篇幅來講解一下如何使用ADO來操作數(shù)據(jù)庫。

    第一講就先到這里,在下一講中將著重介紹一下操作數(shù)據(jù)必須首先要了解的BDE的有關(guān)知識。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi數(shù)據(jù)庫處理 jianshangcao 天極Blog
基于Delphi的三層數(shù)據(jù)庫系統(tǒng)的實現(xiàn)方法
Delphi多線程下的ADO編程
Delphi7+SqlServer2000開發(fā)中小型MIS系統(tǒng),用BDE好還是用ADO好?
認(rèn)識VFP--Visual FoxPro 漫談
Visual Foxpro漫談(二)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服