SQLServer實用教程第13章.ppt
第13章 Delphi/SQL Server開發(fā)與編程,13.1 Delphi數(shù)據(jù)庫應用程序設計,13.1.1 Delphi數(shù)據(jù)庫應用程序結構,Delphi 7數(shù)據(jù)庫應用程序在邏輯上通常由兩部分構成:一是數(shù)據(jù)庫訪問鏈路,二是用戶界面,如圖13.1所示。,1. 用戶界面 用戶界面使用在窗體上放置數(shù)據(jù)顯示/編輯組件的方式來實現(xiàn),數(shù)據(jù)顯示/編輯組件在Delphi 7組件面板的Data Controls頁中。,13.1.1 Delphi數(shù)據(jù)庫應用程序結構,2. 數(shù)據(jù)源 數(shù)據(jù)源組件是數(shù)據(jù)顯示組件和數(shù)據(jù)集組件之間的中介,數(shù)據(jù)集從數(shù)據(jù)庫獲得數(shù)據(jù)后,將其發(fā)送到數(shù)據(jù)源,然后數(shù)據(jù)源將數(shù)據(jù)送到界面上的數(shù)據(jù)顯示組件進行顯示。 3. 數(shù)據(jù)集 數(shù)據(jù)集是數(shù)據(jù)庫應用程序的核心。數(shù)據(jù)集組件保存了一系列從底層的數(shù)據(jù)庫取出的記錄。這些記錄的數(shù)據(jù)可以取自一個數(shù)據(jù)表、一個數(shù)據(jù)表的若干個字段、多個數(shù)據(jù)表的若干字段。 4. 連接部分 不同類型的數(shù)據(jù)集采用不同的機制連接底層數(shù)據(jù)庫。常見的有BDE和ADO方式。 5. 數(shù)據(jù)模塊 數(shù)據(jù)模塊用于放置數(shù)據(jù)庫組件,相當于一個容器。 通過數(shù)據(jù)模塊組件來組織數(shù)據(jù)庫組件有以下二個主要的優(yōu)點:一是這些不可視組件不用直接放在窗體上了,簡化了窗體的設計。二是可以對數(shù)據(jù)庫相關組件進行統(tǒng)一管理,共享相同的內(nèi)容。,13.1.2 ADO組件,ADO組件位于組件面板的ADO頁,如圖13.2所示。,1. ADOConnection組件 ADOConnection組件的主要作用是建立與數(shù)據(jù)庫的連接。使用ADO訪問數(shù)據(jù)庫,必須先與其連接。 ADOConnection組件通過ConnectionString屬性的設置和操作建立與數(shù)據(jù)庫的連接。,13.1.2 ADO組件,(1) 向當前窗體上添加一個ADOConnection組件并選中這個組件,在對象瀏覽器中雙擊這個組件的ConnectionString屬性,彈出如圖13.3所示的對話框;選中Use Connection String,單擊 “Build”按鈕。,13.1.2 ADO組件,(2) 系統(tǒng)將彈出“數(shù)據(jù)鏈接屬性”對話框,如圖13.4所示。對于SQL Server 2000數(shù)據(jù)庫,選擇“Microsoft OLE DB Provider for SQL Server”,單擊“下一步”按鈕。,13.1.2 ADO組件,(3) 在所出現(xiàn)的如圖13.5所示的“數(shù)據(jù)鏈接屬性”對話框的“連接”頁上輸入數(shù)據(jù)庫服務器名稱、輸入服務器登錄信息、選擇數(shù)據(jù)庫名稱,然后點擊“測試”,若所設置的屬性正確,則將出現(xiàn)如圖13.6所示的測試連接成功對話框。,13.1.2 ADO組件,2. ADODataSet組件,ADODataSet組件的主要屬性有ConnectionString、Connection、CommandText和CommandType。,(1) ConnectionString屬性 ConnectionString屬性用來指明數(shù)據(jù)庫連接信息。 (2) Connection屬性 Connection屬性用來指明ADO組件與數(shù)據(jù)庫聯(lián)系的方式。 (3) CommandText屬性 CommandText屬性用于存儲SQL語句、數(shù)據(jù)表名或存儲過程名。,13.1.2 ADO組件,(4) CommandType屬性 CommandType屬性用于指出CommandText中所存儲的命令類型,常用的CommandType屬性值的含義列于表中。,13.1.2 ADO組件,3. ADOTable組件 ADOTable組件主要用來從單個數(shù)據(jù)表中讀取數(shù)據(jù),它的主要屬性有ConnectionString、Connection和TableName。 4. ADOQuery組件 它的主要屬性有ConnectionString、Connection、DataSource、SQL和Parameters。ConnectionString和Connection屬性的含義與使用同ADODataSet組件。 5. ADOStoredProc組件 它的主要屬性有ConnectionString、Connection、DataSource、ProcedureName和Parameters。DataSource指出數(shù)據(jù)源名稱,ProcedureName是需執(zhí)行的存儲過程名,Parameters存儲的是執(zhí)行存儲過程所需的參數(shù)。 6. ADOCommand組件 它的主要屬性有ConnectionString、Connection、CommandText、CommandType,這些屬性的含義和使用方法同ADODataSet組件。,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,數(shù)據(jù)源組件 數(shù)據(jù)源組件位于組件面板的Data Access頁上,如圖13.7所示。數(shù)據(jù)源組件在ADO數(shù)據(jù)集組件(包括ADODataSet、ADOTable、ADOStoredProc和ADOQuery等)與數(shù)據(jù)顯示/編輯組件之間提供了一個接口,起著兩者之間通信的媒介作用。,數(shù)據(jù)源組件的主要屬性是DataSet,用于指出數(shù)據(jù)集。,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,2. 數(shù)據(jù)顯示/編輯組件 組件面板的Data Controls頁中的組件主要用于顯示或編輯數(shù)據(jù)源提供的數(shù)據(jù),如圖13.8所示。常用的數(shù)據(jù)編輯/顯示組件是DBGrid、DBNavigator、DBText、DBEdit、DBMemo和DBImage組件等。,1) DBGrid組件 DBGrid組件采用網(wǎng)格的方式顯示數(shù)據(jù)表中指定字段的數(shù)據(jù),并能夠讓用戶編輯這些數(shù)據(jù)。表13.2列出了DBGrid組件的主要屬性值及含義。DBGrid組件的事件列于表13.3中。,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,2) DBNavigator組件 DBNavigator組件主要用來執(zhí)行在數(shù)據(jù)集中瀏覽數(shù)據(jù)和編輯數(shù)據(jù)的操作,如記錄定位、插入記錄、刪除記錄、保存用戶對記錄的修改等。DBNavigator的外觀見圖13.9,各個按鈕功能描述見表13.4。,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,DBNavigator組件的主要屬性有: (1) DataSource:通過這個屬性使本組件與被其控制的數(shù)據(jù)集聯(lián)系起來。 (2) VisibleButtons:nbFirst、nbPrior、nbNext、nbLast、nblnsert、nbDelete、nbEdit、nbPost、nbCancel、nbRefresh這10個子屬性分別對應著10個按鈕,不同的組合使DBNavigator組件顯示出不同的狀態(tài)。 (3) Hints:程序運行時,鼠標移至DBNavigator某按鈕時彈出的提示信息,通過單擊Hints屬性右邊的省略號可以進入提示信息編輯對話框。 (4) ShowHint:為True時,能在運行時刻顯示提示信息。 (5) Visible:決定在運行中DBNavigator組件是否可見。,3) DBText組件 DBText組件主要用于顯示數(shù)據(jù)集中的字段類型為文本型的字段值,該組件不能用于編輯數(shù)據(jù)庫中的數(shù)據(jù)。 DEText的WordWrap屬性設置為True時,允許當所顯示值的長度超過DBText設計時的長度時折行顯示。,13.1.3 數(shù)據(jù)源組件和數(shù)據(jù)顯示/編輯組件,4) DBEdit組件 該組件能顯示和編輯數(shù)據(jù)源中記錄的字段,可以參照DBText組件來建立DBEdit在數(shù)據(jù)庫應用程序中的應用。 5) DBMemo組件 在DBGrid中不能顯示數(shù)據(jù)類型為Graph和Memo字段中的內(nèi)容,可以使用DBMemo及DBImage分別顯示字段中的內(nèi)容。 6) DBImage組件 DBImage組件提供了一種顯示數(shù)據(jù)庫中的圖像字段的方法,例如SQL Server的Image類型字段,即可用該組件顯示。表13.5列出了DBImage組件的主要屬性和方法。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)模塊 (1) 啟動Delphi 7; (2) 在主菜單中選擇fileNewData Module,將新建數(shù)據(jù)模塊的Name屬性置為“DMCP”,如圖13.10所示,此時將新建一個空數(shù)據(jù)模塊DMCP,如圖13.11所示。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,2. 向數(shù)據(jù)模塊中添加連接組件,(1) 在“ADO”組件面板上選擇“ADOConnection”組件,將其放入DMCP; (2) 將ADOConnection組件的Name屬性設置為“ADOCP”,如圖13.12所示; (3) 設置ADOCP的ConnectionString屬性,選擇圖13.12中“ConnectionString”屬性右邊的文本框,點擊按鈕,將出現(xiàn)圖13.13所示的設置連接串對話框;,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,(4) 選擇“Use Connection String”,單擊“Build”按鈕;在其中選擇“Microsoft OLE DB Provider for SQL Server”,單擊“下一步”; (5) 在所出現(xiàn)的界面中輸入數(shù)據(jù)庫服務器名、選擇身份認證方式、選擇數(shù)據(jù)庫CPXS,單擊“確定”。 (6) 在圖13.12所示的界面中將ADOCP組件的LoginPrompt屬性設置為False。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,【例13.1】在Delphi 7中設計程序將XSBOOK數(shù)據(jù)庫中BOOK表的所有記錄顯示出來。設計步驟如下: (1) 按圖13.15所示設計界面:在窗體中放置一個Label組件,其Caption屬性為“圖書信息”;然后在放置1個ADOConnection、1個DataSource、1個ADOTable和1個DBGrid組件,這4個組件的屬性按表13.6設置。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,(2) 單擊運行按鈕,運行該程序。 【例13.2】直接在窗體中放置數(shù)據(jù)訪問組件,創(chuàng)建一個簡單數(shù)據(jù)庫應用程序。 (1)選擇主菜單下的FileNewApplication,創(chuàng)建一個應用程序。 (2)從Data Access頁上將一個數(shù)據(jù)源組件DataSource拖放到主窗體上。數(shù)據(jù)源組件在組件面板上位置如圖13.16所示。,(3)從BDE頁上將一個數(shù)據(jù)表組件Table拖放到主窗體上。數(shù)據(jù)表組件在組件面板上位置如圖13.17所示。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,(4)從Data Control頁上將一個表格顯示組件DBGrid和一個數(shù)據(jù)瀏覽組件DBNavigator拖放到主窗體上。,(5)按表13.7設置各組件對象的屬性。主窗體如圖13.19所示。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,(6)運行程序?,F(xiàn)在就可以直接在DBGrid上添加、修改、刪除數(shù)據(jù)。例13.2所創(chuàng)建的就是一個基本數(shù)據(jù)維護的應用程序,不用書寫任何程序代碼。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,【例13.3】使用數(shù)據(jù)模塊,創(chuàng)建與例13.2完成同樣功能的應用程序。 (1)選擇主菜單下的FileNewApplication,創(chuàng)建一個應用程序。 (2)選擇主菜單下的FileNewData Module,創(chuàng)建一個數(shù)據(jù)模塊。 (3)向數(shù)據(jù)模塊中添加一個數(shù)據(jù)源組件DataSource和一個數(shù)據(jù)表組件Table,添加了這兩個組件后的數(shù)據(jù)模塊如圖13.20所示。 (4)向主窗體中添加一個表格顯示組件DBGrid和一個數(shù)據(jù)瀏覽組件DBNavigator,如圖13.21所示。,(5)保存數(shù)據(jù)模塊單元為DMUStu,保存主窗體單元為FormMain。,13.2 設計數(shù)據(jù)模塊連接數(shù)據(jù)庫,(6)鼠標單擊主窗體,選擇主菜單下的FileUse Unit命令,選擇數(shù)據(jù)模塊對應的單元文件,在本例中對應的單元文件為DMUStu,如圖13.22所示 。,(7)按表13.8設置各組件對象的屬性。,(8)單擊F9按鈕運行程序。,