亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? core1.htm

?? Delphi4核心編程技術
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<html><head><title>第一章 設計數據庫應用程序 http://jjlzg.yeah.net</title><meta http-equiv=Content-Type content="text/html; charset=gb2312"></head><body bgcolor="#00000" text="#00cc66"><b>第一章 設計數據庫應用程序</b><br>   數據庫應用程序允許用戶與存儲在數據庫中的信息進行交互。數據庫提供了信息的結構,供不同的應用程序共享。<br>   Delphi 4支持關系型數據庫。關系型數據庫以行和列即表格的形式來組織信息。當您設計一個數據庫應用程序的時候,必須了解數據的結構,這樣才能設計出一個合適的用戶界面來顯示數據庫中的數據并且允許用戶輸入新的數據或者修改已有的數據。<br> <b>1.1 使用</b><br>    數據庫構件選項板的“Data Access”頁上的構件用于讀寫數據庫,這些構件都借助于BDE(Borland Database Engine)來訪問數據庫中的信息。<br>    Delphi 4的不同版本所包含的數據庫驅動程序有所不同。不過,所有的版本都包含了訪問本地數據庫的驅動程序,而Client/Server版本和Enterprise版本還 包含了SQL Links用于訪問遠程數據庫。究竟使用本地數據庫還是遠程數據庫取決于幾個方面的因素,例如,表格中要存儲多少數據,有多少用戶要同時訪問數據庫,對數據庫的性能有什么要求。<br> <b>1.1.1 本地數據庫和遠程數據庫</b><br>    本地數據庫位于本地磁盤或局域網上。如果有幾個用戶同時訪問數據庫,本地數據庫采取基于文件的鎖定策略,因此,本地數據庫又叫基于文件的數據庫。<br>    正因為本地數據庫往往與數據庫應用程序在同一個系統中,因此,訪問本地數據庫的速度比訪問遠程數據庫的速度要快。<br>    本地數據庫所能存儲的數據沒有遠程數據庫所能存儲的數據多,在選擇使用本地數據庫還是遠程數據庫時必須考慮到這一點。<br>    使用本地數據庫的應用程序也稱為單層應用程序,因為數據庫和應用程序在同一個文件系統中。<br>    典型的本地數據庫有Paradox、dBASE、FoxPro和Access。<br>    遠程數據庫通常位于遠程計算機上,用戶通過SQL(Structured QueryLanguage)來訪問遠程數據庫中的數據,正是基于這個原因,遠程數據庫有時候也叫SQL服務器或者叫RDBMS(Remote Database Management System)。<br>    遠程數據庫非常適合于幾個用戶同時訪問,與那些基于文件鎖定策略的本地數據庫不同的是,遠程數據庫提供了基于事務的多用戶支持。<br>    遠程數據庫所能存儲的數據也比本地數據庫多得多,甚至有時候數據并不 在一個服務器上,而是分布在幾個服務器上。<br>    使用遠程數據庫的應用程序稱為兩層或多層應用程序,因為數據庫和應用程序位于彼此不依賴的系統(層)中。<br>    典型的SQL服務器有Interbase、Oracle、Sybase、Informix、Microsoft SQLServer和DB2。<br> <b>1.1.2 數據庫的安全性</b><br>    數據庫往往包含了一些敏感信息。為了保護這些信息,不同的數據庫有不同的保護策略。有的數據庫如Paradox和dBASE,僅僅在表格級或字段級提供了安全保護,當一個用戶試圖訪問受保護的表格時,他必須輸入口令。當口令被認可,他只能看到允許的字段。<br>    大部分SQL服務器需要用戶輸入用戶名和口令,一旦用戶成功地登錄到服務器,他所能看到的表格以及能進行的操作與他輸入的用戶名和口令有關。<br>    當您設計一個數據庫應用程序的時候,必須考慮到數據庫服務器需要什么樣的安全措施。例如,如果不想讓用戶輸入口令,您要么使用不需要口令的數據庫,要么在程序中就把用戶名和口令提供好,不過,在程序中提供用戶名和口令容易泄密。<br>    如果需要用戶輸入口令,還必須考慮什么時候輸入口令。如果正在使用一個本地數據庫但希望將來能夠平滑地過渡到一個大型的SQL數據庫,最好在打開一個表之前提示用戶輸入口令,盡管現在還可能用不著口令。<br>   有的服務器可能需要多重口令,為了簡化用戶的操作,可以只要求用戶輸入一個主口令,其余的口令由程序自動提供。<br>    在多層的Client/Server應用程序中,可能要同時用到不同的安全模式,例如,用CORBA或MTS控制訪問中間層,再讓中間層去處理登錄到遠程數據庫的細節。<br> <b>1.1.3 事務</b><br>    一個事務實際上是一組動作,這些動作必須在一個或幾個表被提交之前成功地執行。如果有某個動作執行失敗,所有的動作都將滾回(Undo)。<br>    大部分本地數據庫不支持事務,但BDE驅動程序還是提供了有限的事務處理能力。而SQL數據庫和ODBC兼容的數據庫本身就提供了處理事務的能力。<br> <b>1.1.4 數據字典</b><br>    不管使用本地數據庫還是遠程數據庫,應用程序都有權訪問數據字典。數據字典提供了一個可自定義的不依賴于應用程序的存儲區域,在這個區域中,可以創建擴展的字段屬性集和描述數據的內容和外觀。<br>    例如,如果要經常開發財務軟件,可以創建幾個特殊的字段屬性集,以不同的格式顯示金額。當在設計期創建數據集時,就不需要用對象觀察器手工設置金額字段的顯示格式,只要從數據字典中選擇一個合適的屬性集,讓當前數據集中的金額字段共享它的屬性。使用數據字典能保證數據具有一致的外觀。<br>    在Client/Server環境下,數據字典可以位于遠程服務器上。<br> 位于...DELPHI4\LIB目錄中的DRINTF單元提供了訪問數據字典的編程接口。<br> <b>1.1.5 完整性驗證、存儲過程和觸發器</b><br>    所有的關系數據庫都提供了存儲和操作數據的功能。此外,有些數據庫還提供了有助于保證數據完整的功能。<br>    一是完整性驗證。這個功能提供了一種機制,能夠防止兩個表之間的Master/Detail關系被打斷。當用戶試圖刪除Master表中的一個字段時,如果這個字段被刪掉將導致Detail表中出現孤立的記錄,完整性驗證功能要么不允許刪除這個字段,要么把孤立的記錄刪掉。<br>    二是存儲過程。存儲過程實際上是一組SQL語句,它們放在SQL服務器上,這些SQL語句能夠執行與數據庫相關的任務,然后返回執行結果(記錄集)。三是觸發器。觸發器也是一組SQL語句,這些語句將在響應某個命令時被觸發執行。 <br> <b>1.2 數據庫應用程序的體系結構</b><br>    一個數據庫應用程序在邏輯上通常由兩部分組成:一是數據庫訪問鏈路,二是用戶界面,這就是數據庫應用程序的體系結構。<br> <b>1.2.1 選擇合適的體系結構</b><br>    建議最好把實現數據訪問鏈路的構件與實現用戶界面的構件分開,凡是數據訪問構件最好放在數據模塊上,這樣能夠保證應用程序具有一致的用戶界面。如果把設計好的數據模塊和窗體加到對象庫中,在創建一個新的數據庫應用程序時就不必什么都從頭開始,這樣不但能夠提高編程效率,而且能夠保證程序具有一致的風格。<br>    數據庫應用程序的體系結構取決于是使用本地數據庫還是遠程數據庫,取決于同時訪問數據庫的用戶數以及數據庫中需要存儲哪些類型的信息。<br>    如果數據庫中的信息不需要在幾個用戶之間共享,建議使用本地數據庫,可以獲得較快的訪問速度,而且不必購買昂貴的服務器。不過,本地數據庫所能存儲的數據容量是有限的。<br>    如果需要存儲很多的信息,最好改用遠程數據庫。不過,兩層的體系結構需要SQL Links的支持,而SQL Links只有Delphi 4的Client/Server和Enterprise版本中才包含有。<br>    如果表與表之間的信息存在著比較復雜的關系,或者用戶的數量增加了,建議您考慮多層的體系結構。與兩層的應用程序相比。多層的應用程序多了一個中間層,中間層用于集中處理應用邏輯,這樣,不同用途的客戶程序可以使用相同的數據并且保證數據邏輯是一致的。同時,客戶程序可以做得比較小巧,因為相當大的一部分工作由中間層去做了,這就是所謂的“瘦”客戶。“瘦”客戶更容易安裝、配置和維護,因為它不需要包含數據庫訪問鏈路,不需要BDE。用多層的體系結構還有個好處是,可以把數據處理的任務分布在幾個不同的系統中完成。當然,只有Client/Server和Enterprise版本才支持多層的體系結構。<br>    不過,層數越多,開發難度和費用就越大,因此,開發數據庫應用程序時,最好先從單層開始,隨著數據和用戶的增加,再逐步平滑地過渡到多層體系結構。這里的關鍵是,一開始就要考慮到體系結構的可伸縮性,以最大限度地重用代碼,使用以前的投資。<br> <b>1.2.2 可伸縮性</b><br>    BDE的結構以及數據模塊的使用使可伸縮性成為可能。不管是單層、兩層還是多層,都可以把用戶界面與數據訪問鏈路分開,如圖1.1所示<br>   其中,窗體主要用于實現用戶界面,它的主要部件是數據控件。數據模塊主要用于實現數據訪問鏈路,換句話說,就是引入數據集。數據集與數據控件之間通過TDataSource構件連接。把用戶界面與數據訪問鏈路分開的好處是,當應用程序以后過渡到多層體系結構時,只有數據模塊上的數據集構件需要修改,而用戶界面不需要變動。<br>    不過,有的用戶界面可能需要相應地變動,例如,不同的數據庫有不同的安全策略,有的數據庫要求登錄,而有的數據庫可能不需要登錄。<br>    BDE本身就具有可伸縮性,要把一個基于BDE的單層應用程序過渡到兩層應用程序,這非常簡單,只要修改數據集連接一個SQL服務器就行了。<br>    要把一個基于TClientDataSet構件的單層應用程序過渡到多層應用程序,也是非常容易的,因為TClientDataSet 同時支持從文件中存取數據和通過IProvider接口存取數據。<br>    如果計劃過渡到三層的體系結構,可以先按單層或兩層設計,除了要把用戶界面分開外,還要把應用邏輯分開,因為應用邏輯最終要放到中間層即應用服務器上。在設計用戶界面時,可以暫時用本地數據庫提供數據,以后再改用TClientDataSet獲取數據。<br>   圖1.2 單層數據庫應用程序的體系結構<br> <b>1.2.3 單層的數據庫應用程序</b><br>    在單層的數據庫應用程序中,應用程序和數據庫共享同一個文件系統,它們使用本地數據庫或文件來存取數據。 <br>    一個單層的數據庫應用程序同時包含了用戶界面和數據訪問機制(可能是通過BDE,也可能是通過文件)。圖1.2是單層數據庫應用程序的體系結構。可以看出,既可以通過基于BDE的數據集構件從本地數據庫中獲取數據,也可以通過TClientDataSet構件從文件中獲取數據。有一個共同點是,它們都通過TDataSource構件向用戶界面提供數據。<br> <b>1.2.4 兩層的數據庫應用程序</b><br>    在兩層的數據庫應用程序中,客戶程序提供用戶界面,通過BDE從遠程數據庫服務器獲取數據。圖1.3是兩層數據庫應用程序的體系結構。<br>    圖1.3 兩層數據庫應用程序的體系結構<br>    在這種模式下,所有的應用程序都是客戶,客戶通過BDE與遠程數據庫服務器交換數據。一個服務器可以同時處理許多客戶的請求,協調訪問并且更新數據。<br> <b>1.2.5 多層的數據庫應用程序</b><br>    在多層的數據庫應用程序中,客戶程序、應用服務器和遠程服務器分布在不同的機器上。其中,客戶程序主要提供用戶界面,它能夠向應用服務器請求數據和申請更新數據。再由應用服務器(又叫Remote Data Broker)向遠程數據庫服務器請求數據和申請更新數據。圖1.4是多層數據庫應用程序的體系結構。<br>    圖1.4 多層數據庫應用程序的體系結構<br>    Delphi 4既可以創建客戶程序,也可以創建應用服務器。客戶程序通過IProvider接口與應用服務器通訊,通訊的協議可以是TCP/IP、DCOM、MTS或 CORBA。通訊協議與客戶程序上的MIDAS連接構件有關,也與應用服務器上的數據模塊有關。<br>    應用服務器通過IProvider接口有幾種方式。如果應用服務器上包含TDataSetProvider構件或TProvider構件,IProvider接口將由這兩個構件提供。如果應用服務器上沒有TDataSetProvider構件和TProvider構件,IProvider接口由基于BDE的數據集構件提供。用TDataSetProvider構件或TProvider構件提供IProvider接口的好處是可以對IProvider接口進行控制。不過,不管哪種情況,IProvider接口都能在客戶程序與應用服務器之間傳遞數據。<br>    在多層模式下,幾個客戶有可能同時與一個應用服務器通訊,應用服務器實際上充當了一個網關的作用。<br> <b>1.3 設計用戶界面</b><br>    構件選項板的“Data Controls”頁上的構件(也叫數據控件)用于顯示數據庫的數據,并且讓用戶編輯數據并保存到數據庫中。數據控件構成了數據庫應用程序的用戶界面(UI)。<br>    數據控件通過TDataSource構件與數據庫連接,TDataSource構件就好像用戶界面與數據庫之間的導管。在同一個窗體上,幾個數據控件可以連接到同一個TDataSource構件,這幾個數據控件能夠保持同步,因為數據控件總是顯示當前記錄的數據。TDataSource構件一般放在數據模塊上,與用戶界面分開。<br>    數據控件有好幾種,使用哪個數據控件取決于要顯示的數據的類型,也取決于怎樣組織這些信息、怎樣讓用戶瀏覽信息和怎樣讓用戶編輯數據的方式。<br> <b>1.3.1 顯示單條記錄和多條記錄</b><br>    很多情況下,在同一個時刻應用程序只需要顯示一條記錄即當前記錄的數據,事實上,構件選項板上的數據控件大多數是為顯示當前記錄的數據而設計的,如TDBText構件。<br>    如果要同時顯示多條記錄,就要用TDBGrid構件或TDBCtrlGrid構件。這兩個構件既可以顯示多條記錄,也可以顯示多個字段。<br>    兩個表之間可以建立Master/Detail關系,相應地,客戶程序可以用一個TDBText構件顯示Master表的某個字段,用一個TDBGrid構件顯示Detail表的多條記錄。<br> <b>1.3.2 分析數據</b><br>    有些數據庫應用程序并不是直接把數據庫中的原始數據顯示給用戶,而是對數據進行分析、統計后以一種恰當的方式顯示出來,這樣能夠幫助用戶從中得出結論。<br>    構件選項板的“Data Controls”頁上有一個TDBChart構件,這個構件能夠以圖表的形式對數據進行分析和顯示。如果您購買的是Delphi 4的Client/Server版本,構件選項板上將有“Decision Cube”頁。這一頁上的構件能夠對數據進行多維分析和統計,并以柵格和圖表的形式顯示出來。<br> <b>1.3.3 選擇要顯示的數據</b><br>    一個數據庫應用程序往往只關心數據庫中的一部分數據,比如,有的程序只關心一部分字段,而有的程序只關心一部分記錄。<br>    至于怎樣取出關心的數據,這取決于您使用的數據集構件。一個數據庫應用程序中可能使用了幾個數據集構件。Delphi 4支持六種類型的數據集。<br>    TTable構件。在邏輯上代表一個表。可以通過創建永久字段對象來調整字段的外觀,可以增加Lookup字段和計算字段,可以設置過濾條件和范圍來選擇記錄。<br>    TQuery構件。可以對數據庫進行查詢,并返回符合條件的記錄。<br>    TStoredProc構件。用于執行SQL服務器上的存儲過程。存儲過程也可以返回符合特定條件的記錄。<br>    TClientDataSet構件。能夠從應用服務器檢索數據,在本地內存中復制一個副本。正是基于這個原因,TClientDataSet能同時工作的記錄數是有限的。用TClientDataSet 建立的客戶程序可以做得很小,因為它不需要依賴于BDE,只需要DBClient.DLL文件。TClientDataSet既可以從應用服務器取得數據,也可以從文件中取得數據。<br>    TNestedTable構件。用于訪問嵌套表中的記錄。盡管Delphi 4不能直接創建Oracle8類型的表,但是可以顯示和編輯嵌套表中的數據。<br>   自定義的數據集構件。它是從TDataSet繼承下來的,與上述標準的數據集構件不同的是,自定義的數據集構件得自己解釋記錄緩沖區中的內容。對于自定義的數據集來說,仍然可以使用字段編輯器,也可以使用標準的數據控件顯示數據。</body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合图片区| 卡一卡二国产精品| 国产精品久久久久永久免费观看| 日韩一区二区电影网| 91精品国产aⅴ一区二区| 欧美视频精品在线| 欧美三区免费完整视频在线观看| 99精品视频在线观看| 色屁屁一区二区| 欧美麻豆精品久久久久久| 欧美高清视频www夜色资源网| 91精品国产黑色紧身裤美女| 日韩精品资源二区在线| 久久影院午夜论| 国产精品久久久久aaaa樱花| 亚洲欧美另类小说视频| 亚洲国产一二三| 另类小说色综合网站| 国产一区不卡精品| 色综合色综合色综合 | 日韩免费高清电影| 精品国产成人系列| 综合在线观看色| 午夜精品久久久久久久99水蜜桃| 麻豆视频一区二区| 国产成人av影院| 91黄色免费版| 精品国产乱码久久久久久久久| 欧美国产一区在线| 亚洲第一福利一区| 懂色av中文一区二区三区| 欧美综合一区二区| 精品国产一区二区三区久久久蜜月| 久久久欧美精品sm网站| 一区二区高清在线| 国产在线视视频有精品| 欧美中文字幕亚洲一区二区va在线| 日韩午夜在线观看视频| 亚洲欧美日韩在线| 九色porny丨国产精品| 91美女蜜桃在线| 精品少妇一区二区三区免费观看| 国产精品高潮呻吟久久| 蜜桃一区二区三区在线观看| 99久久婷婷国产综合精品| 日韩欧美一区二区免费| 一区二区激情视频| 不卡一卡二卡三乱码免费网站| 欧美日韩精品一区二区| 国产精品对白交换视频| 国模套图日韩精品一区二区| 欧美色图12p| 综合久久给合久久狠狠狠97色| 美美哒免费高清在线观看视频一区二区| 成人av在线资源网站| 26uuu久久综合| 午夜视黄欧洲亚洲| 91电影在线观看| 中文字幕一区免费在线观看 | 麻豆一区二区在线| 欧美日韩成人综合在线一区二区| 中文字幕一区二区5566日韩| 国产精品一区在线观看乱码| 日韩欧美精品在线视频| 人人狠狠综合久久亚洲| 911精品产国品一二三产区| 一区二区久久久久| 日本韩国一区二区三区视频| 亚洲欧洲另类国产综合| 国产成人aaa| 久久精品欧美日韩| 国产一区二区不卡| 国产女主播一区| 国产91色综合久久免费分享| www久久久久| 国产成人在线网站| 国产欧美日韩精品一区| 成人av午夜电影| 国产精品久久久久久久久搜平片| 黄一区二区三区| 久久综合久久久久88| 韩国三级中文字幕hd久久精品| 337p粉嫩大胆噜噜噜噜噜91av| 久久精品国产亚洲aⅴ| 精品久久久久久久久久久久包黑料 | 久久99国产精品久久99果冻传媒| 91国产精品成人| 五月天中文字幕一区二区| 欧美高清视频一二三区| 久草精品在线观看| 国产欧美日韩精品在线| 91亚洲精品一区二区乱码| 亚洲第一狼人社区| 日韩欧美中文字幕一区| 国产精品伊人色| 国产精品久久久久久久久免费相片 | 精品欧美久久久| 国产成人一级电影| 亚洲免费在线视频| 日韩一区二区在线观看| 国产成人夜色高潮福利影视| 亚洲欧美日本在线| 日韩亚洲欧美在线| av在线播放不卡| 午夜精品一区在线观看| 久久日韩粉嫩一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品久久久久国产精品日日| 欧美午夜视频网站| 国产大片一区二区| 五月激情综合色| 中文字幕成人网| 9191国产精品| 不卡电影一区二区三区| 蜜臀国产一区二区三区在线播放| 国产精品美女久久久久久| 91精品国产综合久久精品麻豆 | 亚洲一区二区三区四区五区中文 | 精品1区2区3区| 国产ts人妖一区二区| 亚洲地区一二三色| 国产精品久久毛片av大全日韩| 欧美久久一二区| 色综合久久久久久久| 国产一区在线不卡| 午夜日韩在线电影| 亚洲视频一区在线观看| 久久久久久久久久久黄色| 欧美日韩视频在线观看一区二区三区| 国产麻豆成人传媒免费观看| 香蕉乱码成人久久天堂爱免费| 国产精品青草久久| 国产婷婷色一区二区三区在线| 在线播放中文字幕一区| 91蝌蚪国产九色| 成人一道本在线| 国产一区二区剧情av在线| 日本在线播放一区二区三区| 亚洲一区二区三区四区在线观看 | 久久久久久久久久电影| 日韩午夜电影av| 欧美高清性hdvideosex| 欧美影院一区二区三区| 91黄色激情网站| 在线免费观看不卡av| 99国内精品久久| av中文一区二区三区| 成人永久免费视频| 处破女av一区二区| 国产成人午夜精品影院观看视频| 日韩高清电影一区| 日日摸夜夜添夜夜添精品视频| 午夜免费欧美电影| 日韩av高清在线观看| 免费看黄色91| 六月丁香婷婷久久| 国产一区二区三区观看| 岛国一区二区三区| www.亚洲激情.com| 91浏览器在线视频| 欧美性极品少妇| 69av一区二区三区| 精品国产一区二区三区四区四 | 亚洲一区视频在线| 五月综合激情网| 久久成人免费电影| 国产成人精品一区二区三区网站观看| 黄页视频在线91| 波多野洁衣一区| 一本一道久久a久久精品| 欧美日韩专区在线| 欧美成人video| 国产精品另类一区| 亚洲大片一区二区三区| 蜜桃精品视频在线| 成人美女视频在线观看| 色综合激情五月| 日韩欧美一区二区视频| 国产午夜一区二区三区| 亚洲在线视频免费观看| 日本在线不卡视频| 本田岬高潮一区二区三区| 欧美日韩激情一区| 久久精品人人做人人综合| 亚洲最大色网站| 国内精品久久久久影院薰衣草| 91在线观看地址| 精品国产亚洲一区二区三区在线观看 | 日本网站在线观看一区二区三区 | 久久久精品免费观看| 亚洲免费av在线| 国产美女av一区二区三区| 色久综合一二码| 日韩精品影音先锋| 亚洲免费观看视频| 国产精品99久久久久久久vr| 欧美日韩国产精品成人| 国产精品久久久爽爽爽麻豆色哟哟 | 丝袜亚洲另类欧美| 国产91精品一区二区麻豆网站|