




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
南京理工大學計算機學院1本章主要講解內(nèi)容數(shù)據(jù)庫應用程序的構成數(shù)據(jù)源組件DataSource數(shù)據(jù)集組件DataSetADO組件通過ODBC訪問數(shù)據(jù)庫數(shù)據(jù)顯示/編輯組件南京理工大學計算機學院2
3.1數(shù)據(jù)庫應用程序的構成南京理工大學計算機學院33.1.1客戶機/服務器體系結構
1.客戶機/服務器(Client/Server)模型 客戶機/服務器(C/S)代表了軟件實體(如進程、對象)之間相互作用時的一種最典型的模式和相互關系。在這種模式中,服務器實現(xiàn)了某種功能,客戶機則以某種方式從服務器處獲得這種功能。
南京理工大學計算機學院43.1.1客戶機/服務器體系結構
服務器軟件與客戶機軟件的功能分布見表。
客戶機/服務器功能
南京理工大學計算機學院53.1.1客戶機/服務器體系結構2.SQLServer2000與Delphi的完美結合 微軟SQLServer2000作為大型的關系數(shù)據(jù)庫管理系統(tǒng) (RDBMS)提供了對數(shù)據(jù)庫管理和開發(fā)的支持,它是一個基于客戶機/服務器(C/S)模式的關系數(shù)據(jù)庫管理系統(tǒng),其C/S體系結構如圖所示。商業(yè)邏輯和向用戶提供數(shù)據(jù)
進行數(shù)據(jù)庫數(shù)據(jù)操作和管理
南京理工大學計算機學院63.1.2Delphi數(shù)據(jù)庫應用程序應用程序的組件構成
數(shù)據(jù)庫應用程序在邏輯上通常由兩部分構成:● 是數(shù)據(jù)庫訪問鏈路● 是用戶界面
數(shù)據(jù)庫應用程序的組件構成
南京理工大學計算機學院73.1.2Delphi數(shù)據(jù)庫應用程序
(1)用戶界面
用戶界面用于將數(shù)據(jù)庫中的數(shù)據(jù)顯示出來,并提供一種操作機制,使用戶能夠?qū)?shù)據(jù)庫中的數(shù)據(jù)進行編輯和瀏覽操作。(2)數(shù)據(jù)模塊 ●數(shù)據(jù)模塊是Delphi中一個類似窗體(Form)的組件,它相當于一個容器,用于放置數(shù)據(jù)庫組件,如組件Table、Query、Database、Session、StoredProc等,這些與數(shù)據(jù)庫相關組件均為不可視組件。 ●通過數(shù)據(jù)模塊組件來組織數(shù)據(jù)庫組件有二個主要的優(yōu)點:
◆這些不可視組件不用直接放在窗體上了,簡化了窗體的設計。
◆可以對數(shù)據(jù)庫相關組件進行統(tǒng)一管理,共享相同的內(nèi)容。 ●數(shù)據(jù)模塊體現(xiàn)了Delphi面向?qū)ο蠛徒M件重用的特性。 ●擊主菜單的File
New
DataModule命令可添加新的空白數(shù)據(jù)模塊。
南京理工大學計算機學院83.1.2Delphi數(shù)據(jù)庫應用程序(3)數(shù)據(jù)源
數(shù)據(jù)源組件是數(shù)據(jù)顯示組件和數(shù)據(jù)集組件之間的中介。當使用數(shù)據(jù)模塊時,數(shù)據(jù)源組件是數(shù)據(jù)模塊的一部分,通過組件面板的DataAccess頁中的組件進行數(shù)據(jù)源設計。(4)數(shù)據(jù)集 數(shù)據(jù)集是數(shù)據(jù)庫應用程序的核心。數(shù)據(jù)集組件保存了一系列從底層的數(shù)據(jù)庫取出的記錄。這些記錄的數(shù)據(jù)可以取自一個數(shù)據(jù)表、一個數(shù)據(jù)表的若干個字段、多個數(shù)據(jù)表的若干字段??赏ㄟ^組件面板的BDE、ADO頁中的組件進行設計。
南京理工大學計算機學院93.1.2Delphi數(shù)據(jù)庫應用程序
(5)連接部分 不同類型的數(shù)據(jù)集采用不同的機制連接底層數(shù)據(jù)庫。常見的 有BDE、ODBC及ADO等幾種方式。數(shù)據(jù)存取機制
南京理工大學計算機學院103.1.2Delphi數(shù)據(jù)庫應用程序2.數(shù)據(jù)庫應用程序的層次劃分
數(shù)據(jù)庫應用程序的體系結構主要由兩方面決定: ●使用的數(shù)據(jù)庫類型(即是本地數(shù)據(jù)庫還是遠程數(shù)據(jù)庫) ●同時訪問數(shù)據(jù)庫的用戶數(shù)以及數(shù)據(jù)庫中需要存儲哪些類型的信息。(1)單層數(shù)據(jù)庫應用程序 單層數(shù)據(jù)庫應用程序中,應用程序和數(shù)據(jù)庫共享同一個文件系統(tǒng),它們使用本地數(shù)據(jù)庫或文件來存取數(shù)據(jù)。單層數(shù)據(jù)庫應用程序的結構
南京理工大學計算機學院113.1.2Delphi數(shù)據(jù)庫應用程序
(2)兩層數(shù)據(jù)庫應用程序在兩層數(shù)據(jù)庫應用程序中,客戶程序提供用戶界面,通過BDE、ADO從遠程數(shù)據(jù)庫服務器數(shù)獲取數(shù)據(jù)。BDE方式下的兩層數(shù)據(jù)庫應用程序結構ADO方式下的兩層數(shù)據(jù)庫應用程序結構
南京理工大學計算機學院123.1.2Delphi數(shù)據(jù)庫應用程序
(3)多層數(shù)據(jù)庫應用程序
在多層數(shù)據(jù)庫應用程序中,客戶程序、應用服務器和遠程數(shù)據(jù)庫服務器通常分布在不同的機器上??蛻舫绦蛑饕峁┯脩艚缑?,它向應用服務器請求數(shù)據(jù)和申請更新數(shù)據(jù);再由應用服務器向遠程數(shù)據(jù)庫服務器請求數(shù)據(jù)和申請更新數(shù)據(jù)。
南京理工大學計算機學院133.1.3數(shù)據(jù)庫應用程序的建立
Delphi數(shù)據(jù)庫應用程序主要有兩種方法:直接在窗體中放入數(shù)據(jù)組件;先創(chuàng)建數(shù)據(jù)模塊,再對數(shù)據(jù)模塊進行引用。
下面用兩例來說明:南京理工大學計算機學院141.直接在窗體中放置數(shù)據(jù)訪問組件法
(1)選擇主菜單下的File
New
Application,創(chuàng)建一個應用程序。(2)從DataAccess頁上將一個數(shù)據(jù)源組件DataSource拖放到主窗體上。數(shù)據(jù)源組件在組件面板上位置如圖所示。
(3)從BDE頁上將一個數(shù)據(jù)表組件Table拖放到主窗體上。數(shù)據(jù)表組件在組件面板上位置如圖所示。數(shù)據(jù)源組件數(shù)據(jù)源組件在組件面板上的位置
數(shù)據(jù)源組件
數(shù)據(jù)表組件在組件面板上的位置
南京理工大學計算機學院151.直接在窗體中放置數(shù)據(jù)訪問組件法(4)從DataControl頁上將一個表格顯示組件DBGrid和一個數(shù)據(jù)瀏覽組件DBNavigator拖放到主窗體上。DBGrid組件用于顯示數(shù)據(jù)表中的記錄;DBNavigator組件用于對數(shù)據(jù)表進行編輯和瀏覽。兩個組件在組件面板的位置。
DBGrid組件
DBNavigator組件
表格、導航組件在組件面板上的位置
南京理工大學計算機學院161.直接在窗體中放置數(shù)據(jù)訪問組件法
(5)按表設置各組件對象的屬性。運行后主窗體如圖所示。
窗體和組件對象屬性表
程序界面(設置屬性值后的狀態(tài))
數(shù)據(jù)瀏覽
數(shù)據(jù)源數(shù)據(jù)表表格顯示
南京理工大學計算機學院172.使用數(shù)據(jù)模塊創(chuàng)建
(1)選擇主菜單下的File
New
Application,創(chuàng)建一個應用程序。 (2)選擇主菜單下的File
New
DataModule,創(chuàng)建一個數(shù)據(jù)模塊。 (3)向數(shù)據(jù)模塊中添加一個數(shù)據(jù)源組件DataSource和一個數(shù)據(jù)表組件Table,添加了這兩個組件后的數(shù)據(jù)模塊。
(4)向主窗體中添加一個表格顯示組件DBGrid和一個數(shù)據(jù)瀏覽組件DBNavigator。
南京理工大學計算機學院182.使用數(shù)據(jù)模塊創(chuàng)建
(5)保存數(shù)據(jù)模塊單元為DMUStu,保存主窗體單元為FormMain。(6)鼠標單擊主窗體,選擇主菜單下的File
UseUnit命令,選擇數(shù)據(jù)模塊對應的單元文件,在本例中對應的單元文件為DMUStu,如圖所示,單擊窗體中的OK按鈕,使主窗體的單元文件能夠引用數(shù)據(jù)模塊的單元文件。查看主窗體的單元文件FormMain代碼,會發(fā)現(xiàn)在實現(xiàn)部分增加了一條語句:usesDMUStu;該語句由本步操作過程產(chǎn)生,表明主窗體引用了這個數(shù)據(jù)模塊。南京理工大學計算機學院192.使用數(shù)據(jù)模塊創(chuàng)建
(7)按表設置各組件對象的屬性。運行程序。
南京理工大學計算機學院203.2數(shù)據(jù)源組件DataSource
數(shù)據(jù)源組件在數(shù)據(jù)集組件與數(shù)據(jù)顯示/編輯組件之間提供了一個接口,起著兩者之間通信的媒介作用。每一個數(shù)據(jù)顯示/編輯組件通過數(shù)據(jù)源連接上數(shù)據(jù)集,取得要顯示和操縱的數(shù)據(jù)。同樣,數(shù)據(jù)集組件為了讓它的數(shù)據(jù)被顯示和操縱,必須連上數(shù)據(jù)源組件。另外,數(shù)據(jù)源組件在連接主/從結構的數(shù)據(jù)表時,也起著關鍵的作用。
南京理工大學計算機學院213.2.1數(shù)據(jù)源組件的屬性
1.AutoEdit屬性 該屬性決定是否允許數(shù)據(jù)顯示/編輯組件修改數(shù)據(jù),設置為True時將允許數(shù)據(jù)顯示/編輯組件修改數(shù)據(jù)(前提條件是該組件DataSet屬性對應的數(shù)據(jù)集組件ReadOnly屬性設置為False)。2.DataSet屬性 標識該數(shù)據(jù)源組件正在連接哪一個數(shù)據(jù)集組件。 下面的代碼在運行期改變數(shù)據(jù)源DS的數(shù)據(jù)集。
withDSdobegin if(DataSet=DSet1)then DataSet:=DSet2 else DataSet:=DSet3; end;3.Enabled屬性 該屬性決定DataSource是否生效。4.State屬性
State是只讀屬性,表示與該數(shù)據(jù)源相連接的數(shù)據(jù)集組件的狀態(tài)。
南京理工大學計算機學院223.2.2數(shù)據(jù)源的方法
1.Edit方法
Edit方法使數(shù)據(jù)源相聯(lián)系的數(shù)據(jù)集進入編輯狀態(tài),也可通過修改數(shù)據(jù)源的AutoEdit屬性來實現(xiàn)該功能。2.IsLinkedTo方法
函數(shù)原型:functionIsLinkedTo(DataSet:TDataSet):Boolean;
該函數(shù)用來判斷數(shù)據(jù)源是否與參數(shù)DataSet中指定的數(shù)據(jù)集相聯(lián)系。
南京理工大學計算機學院233.2.3數(shù)據(jù)源的常用事件
1.OnDataChange事件當數(shù)據(jù)顯示/編輯組件移動指針,或修改了字段中的數(shù)據(jù)時,將觸發(fā)該事件。另外,數(shù)據(jù)集中的Next或Prior方法也能觸發(fā)OnDataChange事件。2.OnUpdateData事件當前的記錄被更新時,將觸發(fā)該事件。該事件在數(shù)據(jù)集的post方法之前被調(diào)用,一般用于對數(shù)據(jù)在提交前進行附加的處理和有效性檢查。3.OnStateChange事件在數(shù)據(jù)集的狀態(tài)改變時,將觸發(fā)該事件。
南京理工大學計算機學院243.3數(shù)據(jù)集組件DataSet
DataSet定義了一些關于數(shù)據(jù)集的基本屬性、方法和事件,在此基礎上,派生出Query、Table、StoreProc、ADOTable、ADOQuery、ADOStoreProc等組件。有以下兩種方法使用DataSet:
直接使用Delphi內(nèi)建的DataSet子類,如Table、Query及StoreProc等。在程序中使用這些對象,就相當于打開了相對應的數(shù)據(jù)集。通過繼承DataSet,實現(xiàn)該類中所有的抽象方法。南京理工大學計算機學院253.3.1數(shù)據(jù)集的打開與關閉
有兩種方法打開數(shù)據(jù)集:在對象觀察器設置Active屬性為True,或在運行期間用代碼設置Active:=True。在應用程序運行期間,調(diào)用數(shù)據(jù)集的open方法。關閉一個數(shù)據(jù)集也有兩種方法:在運行期中設置數(shù)據(jù)集的Active屬性為False。在應用程序運行期間,調(diào)用數(shù)據(jù)集的close方法。南京理工大學計算機學院263.3.2數(shù)據(jù)集狀態(tài)及轉(zhuǎn)換
數(shù)據(jù)集狀態(tài)的屬性的取值及含義:數(shù)據(jù)集的狀態(tài)轉(zhuǎn)換:
南京理工大學計算機學院273.3.3數(shù)據(jù)集的瀏覽
每個活動數(shù)據(jù)集有一個游標,指向數(shù)據(jù)集中當前行。當前行是指正在DBEdit、DBLabel、DBMemo等數(shù)據(jù)顯示/編輯組件中所顯示的記錄或DBGrid中箭頭所指的記錄??梢酝ㄟ^移動游標來定位記錄。DataSet定義了BOF、EOF這兩個布爾屬性來提供有關游標的位置信息。
移動游標的方法
數(shù)據(jù)集的BOF和EOF屬性說明
南京理工大學計算機學院283.3.3數(shù)據(jù)集的瀏覽
當執(zhí)行了以下操作之一后,數(shù)據(jù)集的BOF屬性為True。
l
首次打開數(shù)據(jù)集。
l
調(diào)用了First方法。
l
調(diào)用了Prior方法失敗。
而執(zhí)行了以下操作之一后,數(shù)據(jù)集的EOF屬性為True。
l
打開一個空的數(shù)據(jù)集。
l
調(diào)用了Last方法。
l
調(diào)用了Next方法失敗。南京理工大學計算機學院293.3.4對數(shù)據(jù)集進行增、刪、改的操作
可以對數(shù)據(jù)集中的數(shù)據(jù)進行各種編輯操作,所對應的方法列于表中
withMyDataSetdo begin Append; FieldValues[Field1_Name1]:=Field1_NewValue; FieldValues[Field2_Name2]:=Field2_NewValue; Post; end;對數(shù)據(jù)集的修改受其CanModify屬性影響。當CanModify為True時,表明數(shù)據(jù)集是可以修改的。另外,如果數(shù)據(jù)集是Table組件,只有ReadOnly屬性為False,才能對其中的數(shù)據(jù)進行修改。在數(shù)據(jù)集的最后添加一條記錄南京理工大學計算機學院303.3.5數(shù)據(jù)集常用事件
數(shù)據(jù)集常用事件表
南京理工大學計算機學院313.3.5數(shù)據(jù)集常用事件由表可見,數(shù)據(jù)集響應的事件大致分為以下幾大類:
1.Before+操作名這一類事件在執(zhí)行與操作名相應的操作之前被觸發(fā)。下面的代碼在用戶將修改的內(nèi)容寫回數(shù)據(jù)庫中前,利用
BeforePost事件檢查輸入是否有效。該例檢查TDBEdit,若為空則不寫回數(shù)據(jù)庫。
//BeforePost事件代碼
procedureTForm1.MyDataSetBeforePost(DataSet:TDataSet); begin ifDBEdit1.Text=''thenAbort; end;
南京理工大學計算機學院323.3.5數(shù)據(jù)集常用事件
2.After+操作名
該類事件在與操作名相應的操作完成后被觸發(fā),一般可用于報告操作執(zhí)行的結果。 當使用first、last、next、prior、moveby
等方法或數(shù)據(jù)瀏覽 組件DBNavigator時,在當前記錄發(fā)生改變之前/之后觸發(fā)
BeforeScroll事件和AfterScroll事件。 下面的代碼利用AfterScroll事件,在狀態(tài)條上顯示當前記錄號。
//AfterScroll事件代碼
procedureTForm1.MyDataSetAfterScroll(DataSet:TDataSet); begin StatusBar1.panels[0].Text:='Record'+IntToStr(DataSet.RecNo) +‘Of'+IntToStr(DataSet.RecordCount); end;南京理工大學計算機學院333.3.5數(shù)據(jù)集常用事件
3.On+事件 該類事件與普通的OnClick事件相似,只是具體的觸發(fā)條件不同。如OnCalcFields事件在記錄中的數(shù)據(jù)被修改時或者指針從一條記錄移動到另一條記錄的時候被觸發(fā),該事件觸發(fā)后,將對數(shù)據(jù)集中的計算字段重新進行計算。
南京理工大學計算機學院343.3.6數(shù)據(jù)集的字段
字段也是一種對象,在數(shù)據(jù)庫編程時用得很多,使用也很靈活。字段對象都派生自TField類,是數(shù)據(jù)庫應用中的基礎。字段對象完成如下功能:
l
改變數(shù)據(jù)集中的字段值。
l
轉(zhuǎn)換字段值的類型。
l
對用戶輸入的數(shù)據(jù)進行有效性檢查。
l
定義字段如何顯示或編輯。
l
根據(jù)數(shù)據(jù)集的OnCalcFields事件,計算字段的值。訪問記錄中的數(shù)據(jù),需要使用數(shù)據(jù)集的字段對象,如圖所示。南京理工大學計算機學院353.3.6數(shù)據(jù)集的字段1.字段的訪問方式有兩種方式可以訪問當前記錄的字段值。兩種方式對于Query、
Table、StoredProc、ADOTable、ADOQuery、ADOStoredProc
等組件都有效,因為這些組件都是從TDataSet繼承的。(1)使用屬性Fields[i]訪問當前記錄,F(xiàn)ields[i]是按照字段的順來訪問的。訪問這些屬性的方法和處理其它對象一樣。
Table1.Fields[0].DisplayLabel:=‘標識符’ (2)使用方法FieldByName按照字段的名字來訪問。
對students表中的字段Name的訪問:
DataSet1.FieldByName(‘Name’).AsString:=Edit1.text;
把字段內(nèi)的值顯示出來:
Edit1.text:=DataSet1.FieldByName(‘Name’).AsString;南京理工大學計算機學院363.3.6數(shù)據(jù)集的字段2.字段的屬性(1)顯示控制屬性 在數(shù)據(jù)表中,用戶起的字段名一般都很簡單、精煉,可以使用
Tfield
的顯示控制屬性改變字段的顯示方式,獲得友好的用戶界面。
例如,下列語句將按指定的寬度,顯示students表的name字 段的漢字含義。
DBGridl.FieldByName(‘Name’).DisplayLabeL:=’姓名’; DBGridl.FieldByName(‘Name’).DisplayWidth:=8; TField的顯示控制屬性列于表中。南京理工大學計算機學院373.3.6數(shù)據(jù)集的字段(2)約束條件 約束條件的設置是為了讓輸入的字段值合法,符合一定的條件。字段對象可以使用用戶自定義的約束條件進行檢查。
約束條件相關屬性表
南京理工大學計算機學院383.3.6數(shù)據(jù)集的字段3.字段的事件最常用的字段的事件列于表中。南京理工大學計算機學院393.3.6數(shù)據(jù)集的字段4.字段的方法字段的方法列于表中。
南京理工大學計算機學院403.3.6數(shù)據(jù)集的字段5.永久字段
●動態(tài)字段數(shù)據(jù)集中的每一個字段創(chuàng)建一個TField對象,這些生成的TField對象可以通過代碼控制某些屬性。它對數(shù)據(jù)集的適應性強,而控制它的屬性比較麻煩,也不能增加新的計算型顯示字段。 ●永久字段的選擇和設置是在窗體或數(shù)據(jù)模塊設計時完成的。它的字段容易控制字段屬性,也提供了界面以增加計算型字段。
南京理工大學計算機學院413.3.6數(shù)據(jù)集的字段
◆使用字段編輯器建立永久字段的步驟是:
(1)在窗體上放入Table組件,設置該組件的屬性DatabaseName為student,TableName為students,Name為TabStu,Active為true。 (2)右擊窗體上的TabStu,出現(xiàn)如圖所示的快捷菜單,選擇其中的FieldsEditor(字段編輯器)菜單項,將彈出如圖所示的表字段編輯窗口。
Table的快捷菜單
字段編輯器及快捷菜單
字段編輯器
字段編輯器的快捷菜單南京理工大學計算機學院423.3.6數(shù)據(jù)集的字段
(3)右擊字段編輯器的空白處,出現(xiàn)快捷菜單,選擇其中的Addallfields菜單項,所有字段立即出現(xiàn)在字段編輯器內(nèi)。字段列表
南京理工大學計算機學院433.3.6數(shù)據(jù)集的字段
(4)顯示窗體單元的代碼,將會發(fā)現(xiàn)TForm1類的說明部分增加 了剛才添加的永久性字段。代碼片斷如下:
TForm1=class(TForm) TabStu:TTable; TabStuStudentid:TStringField; TabStuName:TStringField; TabStuSex:TBooleanField; TabStuBirthday:TDateField; TabStuDepartmentid:TSmallintField; TabStuTotalscore:TFloatField;
永久性字段對象的訪問形式:
TabStuName.DisplayLabel:='姓名'; TabStuName.DisplayWidth:=8; Edit1.Text:=TabStuName.Value; TabStuName.Value:=Edit1.Text;南京理工大學計算機學院443.3.6數(shù)據(jù)集的字段6.字段的數(shù)據(jù)類型
由于各種數(shù)據(jù)庫字段的數(shù)據(jù)類型不一,所以Delphi必須針對各個字段不同的數(shù)據(jù)類型,定義出各種不同數(shù)據(jù)類型的TField組件,這些組件都從TField組件繼承下來的,所以它們所擁有的組件特性幾乎都相同。
常用字段對象的類型
南京理工大學計算機學院453.3.6數(shù)據(jù)集的字段
字段類型之間的主要區(qū)別在于:它們內(nèi)部保留的以及它們和數(shù)據(jù)庫表之間傳遞的數(shù)據(jù)類型不一樣。字段對象還有一些類似于數(shù)據(jù)轉(zhuǎn)化的屬性。
南京理工大學計算機學院463.3.6數(shù)據(jù)集的字段
一個字段可以用幾種數(shù)據(jù)類型表示,轉(zhuǎn)換規(guī)則如表所示。
以下兩條賦值語句中的MyDataSet.Field[i]字段用2種類型表示:
s:=MyDataSet.Field[i].AsString;//該字段以字符串表示
i:=MyDataSet.Field[i].AsInteger;//該字段以整數(shù)表示注意:從字段對象中讀取字段值時要將它賦給數(shù)據(jù)類型與之相匹配的變量。常用類型轉(zhuǎn)換規(guī)則舉例
南京理工大學計算機學院47綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例
1)主窗體設計
設計時窗體
南京理工大學計算機學院48綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例
窗體和組件對象屬性表
南京理工大學計算機學院49綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例窗體和組件對象屬性表南京理工大學計算機學院50綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例2)編寫程序代碼
//窗體的OnCreate事件處理代碼,完成(1)的功能。
procedureTFormObs.FormCreate(Sender:TObject); begin withTabStudo begin //使用永久字段TabStuStudentid的屬性DisplayLabel TabStuStudentid.DisplayLabel:='學號'; TabStuName.DisplayLabel:='姓名'; TabStuSex.DisplayLabel:='性別'; TabStuBirthday.DisplayLabel:='出生年月'; TabStuDepartmentid.DisplayLabel:='所在系編號'; TabStuTotalscore.DisplayLabel:='總分'; end; end;南京理工大學計算機學院51綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例//永久字段TabStuSex的OnGetText事件處理代碼,完成(2)的功能。procedureTFormObs.TabStuSexGetText(Sender:TField;varText:String; DisplayText:Boolean); //參數(shù)Sender代表字段對象begin ifSender.Valuethen Text:='男'//若表中的某個記錄的Sex字段值為true,則顯示為“男”
else Text:='女'; //若記錄的Sex字段值為true,則顯示為“女”end;//永久字段TabStuSex的OnSetText事件處理代碼。//若由于錄入錯誤,需修改性別時,用布爾值寫入數(shù)據(jù)庫中。procedureTFormObs.TabStuSexSetText(Sender:TField;constText:String);begin ifText='男'thenSender.Value:=true elseSender.Value:=false;end;南京理工大學計算機學院52綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例//GrdStu的OnDblClick事件處理代碼//把最后一個記錄的Name和Totalscore字段值分別寫入兩個編輯框中procedureTFormObs.GrdStuDblClick(Sender:TObject);begin TabStu.DisableControls; try TabStu.First;
//指向第一條記錄,對游標進行初始定位。
whilenotTabStu.Eofdo//在循環(huán)語句中,完成對每一條記錄的處理。
begin //可根據(jù)不同的應用,對記錄進行處理。
//本例中,把字段的值寫入兩個編輯框中
EdtName.Text:=TabStuName.Value; EdtTotal.Text:=TabStuTotalscore.AsString; TabStu.Next;
//指向下一條記錄
end; finally TabStu.EnableControls;end;end;南京理工大學計算機學院53綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例//數(shù)據(jù)源DSStu的OnDataChange事件處理代碼。procedureTFormObs.DSStuDataChange(Sender:TObject;Field:TField);varcurStatus:string;//在curStatus中存放表的當前狀態(tài),即“瀏覽”、“編輯”等begin EdtName.Text:=TabStuName.Value; EdtTotal.Text:=TabStuTotalscore.AsString;end;//數(shù)據(jù)源DSStu的OnStateChange事件處理代碼,完成(3)的功能。procedureTFormObs.DSStuStateChange(Sender:TObject);begin caseTabStu.Stateof dsBrowse:curStatus:='瀏覽'; dsEdit:curStatus:='編輯'; dsInsert:curStatus:='插入'; elsecurStatus:='其它狀態(tài)'; end; SBarObs.Panels[0].Text:=curStatus;//將curStatus的值顯示在工具欄上end;南京理工大學計算機學院54綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例//按鈕“開關數(shù)據(jù)集”的OnClick事件procedureTFormObs.BtnOnOffClick(Sender:TObject);begin TabStu.Close; //關閉數(shù)據(jù)集,觸發(fā)TabStuBeforeClose事件
TabStu.Open;end;
//數(shù)據(jù)集的BeforeClose事件procedureTFormObs.TabStuBeforeClose(DataSet:TDataSet);begin if(TabStu.Statein[dsEdit,dsInsert])then caseMessageDlg('將修改的內(nèi)容寫回數(shù)據(jù)庫中嗎?',mtConfirmation, mbYesNoCancel,0)of mrYes:TabStu.Post;//將修改的內(nèi)容寫回數(shù)據(jù)庫中
mrNo:TabStu.Cancel; //放棄修改
mrCancel:Abort; //不關閉數(shù)據(jù)集
end;end;南京理工大學計算機學院55綜合數(shù)據(jù)源、數(shù)據(jù)集及字段對象的示例4)運行程序
通過NagStu提交
點擊“開關數(shù)據(jù)集”按鈕,彈出了對話框
南京理工大學計算機學院563.4ADO組件
ADO是微軟公司面向各種數(shù)據(jù)的高層接口,這種層次接口被稱為OLEDB。OLEDB訪問速度快,可訪問數(shù)據(jù)類型豐富,包括關系型與非關系型數(shù)據(jù)庫、電子郵件與文件系統(tǒng)、文本與圖片以及客戶事務對象等。ADO組件編寫的程序,可脫離Borland的BDE,而原有的數(shù)據(jù)顯示/編輯組件(如DBGrid與DBEdit)可直接使用ADO組件。
ADO組件位于組件面板的ADO頁,如圖所示。
ADOCommand
ADOTable
ADOStoredPro
RDSConnectionADOConnection
ADODataSet
ADOQuery
南京理工大學計算機學院573.4ADO組件ADO組件與BDE組件的對應關系
南京理工大學計算機學院583.4.1ADOConnection組件
1.設置ConnectionString屬性連接到數(shù)據(jù)庫ADOConnection組件的通過ConnectionString屬性的設置和操作建立與數(shù)據(jù)庫的連接。ConnectionString屬性的類型是字符串,指定一個到ADO數(shù)據(jù)存儲及其屬性的連接。有兩種方式給出連接字符串:1)直接賦予ConnectionString屬性連接串
例如: Provider=Microsoft.Jet.OLEDB.4.0; DataSource=d:\paradoxDB; ExtendedProperties=paradox7.X; PersistSecurityInfo=False
南京理工大學計算機學院593.4.1ADOConnection組件
2)使用屬性編輯器生成連接字符串
(1)向當前窗體上添加一個ADOConnection組件并選中這 個組件,在對象瀏覽器中雙擊這個組件的 ConnectionString屬性,彈出如圖所示的對話框;選中 UseConnectionString,單擊OK按鈕。
設置ConnectionString屬性
南京理工大學計算機學院603.4.1ADOConnection組件
(2)
系統(tǒng)將彈出“數(shù)據(jù)鏈接屬性”(Datalinkproperties)對 話框,如圖所示。在“Provider”頁中選擇數(shù)據(jù)庫驅(qū)動程 序。因本例將訪問基于Paradox的數(shù)據(jù)庫,因此選擇 “MicrosoftJet4.0OLEDBProvider”選項。
“數(shù)據(jù)鏈接屬性”(Datalinkproperties)對話框南京理工大學計算機學院613.4.1ADOConnection組件
(3)選擇All頁,選擇其中的Extendedproperties屬性,雙擊 它將顯示如圖所示的對話框。在該對話框的Property Value上輸入“Paradox7.X”,單擊OK按鈕。
選擇Extendedproperties
設置ExtendedProperties南京理工大學計算機學院623.4.1ADOConnection組件
(4)選擇Connection頁,如圖所示,在“Selectorentera databasename:”框中輸入包含Paradox表格的目錄的 路徑。例如輸入d:\paradoxDB,它包含數(shù)據(jù)庫student 的4個表。再刪除“Username”編輯框的Admin,使之 為空。
總是期待選擇一個文件而不是目錄,因此當使用Paradox數(shù)據(jù)庫時,不要使用Browse按鈕。
南京理工大學計算機學院633.4.1ADOConnection組件
(5)點擊TestConnection按鈕,出現(xiàn)如圖所示的對話框, 表示連接成功,點擊確定按鈕,再點擊OK按鈕,退出 屬性編輯器。至此完成ConnectionString屬性的設置, 也生成了基于Paradox的數(shù)據(jù)庫的連接字符串。
南京理工大學計算機學院643.4.1ADOConnection組件2.事務
ADOConnection組件與事務處理有關的方法為BeginTrans、CommitTrans、RollBackTrans和,事件為OnBeginTransComplete、OnCommitTransComplete、OnRollbackTransComplete。它們與Database所提供的事務支持類似。
南京理工大學計算機學院653.4.1ADOConnection組件【例】利用ADO組件實現(xiàn)數(shù)據(jù)表的主/從結構。
(1)向主窗體上添加一個ADOTable組件和一個ADOQuery組件; 添加兩個DataSource組件;添加兩個DBGrid組件。按照表 對 各組件的屬性進行設置,這時顯示如圖所示的界面。
主窗體
南京理工大學計算機學院663.4.1ADOConnection組件
窗體和組件對象屬性表
南京理工大學計算機學院673.4.1ADOConnection組件
(2)從這一步開始將設置表之間的主/從關系。將ADO表組件 ADOTabGrad的MasterSource屬性設為DSStu,然后雙擊這 個組件的MasterFields屬性,彈出如圖所示的FieldLink Designer對話框。在該對話框中的DetailFields列表框和 MasterFields列表框中分別選中“Studentid”字段,然后單擊 Add按鈕,這時在JoinedFields列表框?qū)⑻砑右豁棥癝tudentid —>Studentid”。如果添加錯誤可以通過單擊Delete按鈕, 或者Clear按鈕將錯誤的關系刪除。正確設置后單擊OK按鈕。
FieldLinkDesigner對話框南京理工大學計算機學院683.4.1ADOConnection組件
(3)單擊工具欄上的RUN按鈕運行程序,運行結果如圖所示???以通過鼠標單擊主表中記錄而使其成為當前記錄,然后觀察 顯示子表中記錄的變化。
運行結果
南京理工大學計算機學院693.4.2ADOCommand組件
ADOCommand組件定義了將對數(shù)據(jù)源執(zhí)行的指定命令。
ADOCommand組件主要用于SQL的數(shù)據(jù)定義(DDL)或執(zhí)行一個不帶返回結果集的存儲過程。
一種是指數(shù)據(jù)操作語言(DML)中的數(shù)據(jù)更新語句(如Insert,Delete或Update),而Select通常要返回結果集;
另一種是指數(shù)據(jù)定義語言(DDL)創(chuàng)建或修改數(shù)據(jù)庫服務器端的語句(如表、索引或存儲過程)。
南京理工大學計算機學院703.4.2ADOCommand組件ADOCommand組件屬性
CommandText屬性
CommandText屬性是表示命令(如SOL語句、表名或存儲過程)的字符串,默認值為空串(‘’)。如果設置該屬性時,將ADOCommand組件的Prepared屬性設置為true,并將ADOCommand組件綁定到打開的連接,則在調(diào)用Execute或Open方法時ADOCommand將準備查詢。(2)CommandType屬性
CommandType屬性指示如何處理CommandText屬性值,其取值和含義如表所示。
南京理工大學計算機學院713.4.2ADOCommand組件
(3)CommandTimeout屬性
CommandTimeout屬性指示在終止嘗試和產(chǎn)生錯誤之前執(zhí)行命令期間需等待的時間(單位為秒),默認值為30。
(4)Prepared屬性
Prepared屬性指示執(zhí)行前是否保存命令的編譯版本,設置或返回布爾型值。2.ADOCommand組件方法
(1)Execute方法
Execute是ADOCommand組件的主要方法,它執(zhí)行在
CommandText屬性中指定的查詢、SQL語句或存儲過程。
南京理工大學計算機學院723.4.2ADOCommand組件
【例】使用ADOCommand組件,向codes表添加一條記錄“4,法律系,ADOCommand示例”。
●先在窗體上各放置一個ADOConnection、ADOCommand、
Button組件。再參照3.4.2節(jié)設置ADOConnection的
ConnectionString屬性連接到數(shù)據(jù)庫student;添加Button1的
OnClick事件處理代碼:
procedureTForm1.Button1Click(Sender:TObject); begin withADOCommand1dobegin CommandText:='INSERTINTOcodes'+ 'VALUES(:NewDepartmentid,:NewDepartment, :NewDescription)'; CommandType:=cmdText; Parameters.ParamByName('NewDepartmentid').Value:=4;Parameters.ParamByName('NewDepartment').Value:='法律系'; Parameters.ParamByName('NewDescription').Value:= 'ADOCommand示例'; Execute; end; end;南京理工大學計算機學院733.4.3ADODataSet組件
ADODataSet是最常用的ADO數(shù)據(jù)集組件,使用該組件可以從ADO數(shù)據(jù)庫讀取一個或多個數(shù)據(jù)表??梢灾苯幼x取數(shù)據(jù)表,也可以通過SQL語句訪問數(shù)據(jù)表。在使用ADODataSet訪問數(shù)據(jù)之前需要建立它與數(shù)據(jù)庫之間的關聯(lián),建立這種關聯(lián)可以通過設置ADODataSet的ConnectionString屬性或者通過設置Connection屬性為一個ADOConnectonnection組件。
南京理工大學計算機學院743.4.3ADODataSet組件ADODataset的屬性
(1)CursorType屬性
CursorType屬性定義游標類型。不同游標類型對記錄的操作有不同的影響,在ADO中定義了四種不同的游標類型: 動態(tài)游標、鍵集游標、靜態(tài)游標和僅向前游標。 在打開ADODataset之前設置可以通過設置CursorType屬性來選擇游標類型。如果沒有指定游標類型,將默認打開鍵集游標。(2)Connection屬性
Connection屬性可設置為ADODataset組件當前所屬的 ADOConnection組件。
南京理工大學計算機學院753.4.3ADODataSet組件2.ADODataset的方法(1)CancelUpdates方法 該方法取消在調(diào)用Update方法前對當前記錄或新記錄所作的 任何更改。(2)UpdateBatch方法 該方法將所有在本地緩存的更改寫入數(shù)據(jù)庫。若 ADODataset組件支持,則可將一個或多個記錄的多重更改 緩存在本地,然后再調(diào)用UpdateBatch方法一起更新。
(3)Clone方法
Clone方法創(chuàng)建現(xiàn)有ADODataset組件的副本。這對于希望保 留多個當前記錄十分有用。當前記錄在新復制的
ADODataset組件將設置為首記錄。
南京理工大學計算機學院763.4.3ADODataSet組件
(4)DeleteRecords方法
DeleteRecords方法刪除當前記錄或記錄組。它的語法格式如下:
typeTAffectRecords=(arCurrent,arFiltered,arAll,arAllChapters); procedureDeleteRecords(AffectRecords:TAffectRecords=arAll);
AffectRecords參數(shù)確定Delete方法所影響的記錄數(shù)目,取值見表: ●如果在事務中嵌套刪除,可用RollbackTrans方法恢復已刪除的 記錄; ●如果處于批更新模式,則可用CancelBatch方法取消一個或一組掛 起刪除。
南京理工大學計算機學院773.4.3ADODataSet組件
(5)Requery方法
Requery方法通過重新執(zhí)行對象所基于的查詢,更新 ADODataset組件中的數(shù)據(jù)。
(6)LoadFromFile方法和SaveToFile方法 公文包方式就是指外出辦理業(yè)務,不能與數(shù)據(jù)庫服務器相 連,暫時先使用事先備份下來存在文件中的數(shù)據(jù),回到網(wǎng) 絡環(huán)境中后,連接數(shù)據(jù)庫服務器,再把文件中的數(shù)據(jù)更新 到數(shù)據(jù)庫中。ADO通過使用兩個方法支持公文包方式,即
LoadFromFile和SaveToFile,有兩種文件格式,即ADTG和 XML。
南京理工大學計算機學院783.4.3ADODataSet組件
▲語法:
LoadFromFile(constFileName:WideString); SaveToFile將查詢結果保存在文件中。
▲語法:
procedureSaveToFile(constFileName:String=''; Format:TPersistFormat=pfADTG);
各參數(shù)的說明如下:
l
FileName:用于保存文件的完整路徑名及文件名。
l
Format:保存文件所使用的格式,以是下列常量之一:
①pfADTG:默認值,使用專用的AdvancedData Tablegram格式保存。
②pfXML:使用XML格式保存
南京理工大學計算機學院793.4.3ADODataSet組件【例】本程序模擬公文包的使用。 (1)程序完成的功能是:當選中“連接數(shù)據(jù)庫復選框”時,應用程 序與數(shù)據(jù)庫student連接,當關閉應用程序時,把修改后的數(shù) 據(jù)保存于表students中;當未選中“連接數(shù)據(jù)庫復選框”時,應 用程序與數(shù)據(jù)庫student脫離,當關閉應用程序時,把修改后 的數(shù)據(jù)保存于公文包文件d:\students.xml中。 (2)設計應用程序主界面如圖所示,使用的窗體、組件及其屬 性值如表所示。
程序界面
南京理工大學計算機學院803.4.3ADODataSet組件窗體和組件對象屬性表
窗體和組件對象屬性表南京理工大學計算機學院813.4.3ADODataSet組件
(3)編寫程序代碼
const FileName='d:\students.XML';
LoadData過程,完成數(shù)據(jù)的裝入。如果存在公文包文件 (d:\students.XML),則從該文件裝入數(shù)據(jù),即把公文包中的數(shù) 據(jù)更新到數(shù)據(jù)庫中。否則直接從數(shù)據(jù)庫中取得數(shù)據(jù)
procedureTFormBriefcase.LoadData; begin ifFileExists(FileName)then Studs.LoadFromFile(FileName) //若存在公文包,從公文包中獲得數(shù)據(jù)
else begin //選中"連接數(shù)據(jù)庫復選框" //提示用戶目前正與數(shù)據(jù)庫相連;從數(shù)據(jù)庫中獲得數(shù)據(jù)
ConnectionInd.Checked:=True; Studs.Open; end; end;
南京理工大學計算機學院823.4.3ADODataSet組件
UpdateData過程,把數(shù)據(jù)寫入數(shù)據(jù)庫中。該過程完成三件事情:
l
選中“連接數(shù)據(jù)庫復選框”,提示用戶目前正與數(shù)據(jù)庫相連;
l
將緩存中的數(shù)據(jù)寫入數(shù)據(jù)庫;
l
將公文包中的數(shù)據(jù)已經(jīng)寫回數(shù)據(jù)庫中,并且刪除公文包
procedureTFormBriefcase.UpdateData; begin ConnectionInd.Checked:=True; Studs.UpdateBatch; DeleteFile(FileName); end;
SaveData過程。將數(shù)據(jù)庫中的數(shù)據(jù)備份下來,留待脫離網(wǎng)絡環(huán)境時 使用
procedureTFormBriefcase.SaveData; begin Studs.SaveToFile(FileName,pfXML); end;南京理工大學計算機學院833.4.3ADODataSet組件
FormCreate事件,調(diào)用LoadData過程。程序運行時判別是否存在 公文包文件employee.xml,若存在,則從該文件中裝入數(shù)據(jù),否 則,從數(shù)據(jù)庫中裝入數(shù)據(jù)。
procedureTFormBriefcase.FormCreate(Sender:TObject); begin LoadData; end;
FormCloseQuery事件。處理該事件目的是:當關閉窗體時,做一 些善后的工作。如果應用程序正與數(shù)據(jù)庫相連時,把數(shù)據(jù)已經(jīng)寫回 數(shù)據(jù)庫中;否則應用程序未與數(shù)據(jù)庫相連,處于脫離數(shù)據(jù)庫狀態(tài), 此時把處理后的數(shù)據(jù)寫入公文包中。
南京理工大學計算機學院843.4.3ADODataSet組件
procedureTFormBriefcase.FormCloseQuery(Sender:TObject;var CanClose:Boolean); begin ifConnectionInd.Checkedthen begin ADOConStu.Open; Studs.Connection:=ADOConStu; UpdateData; end else begin Studs.Connection:=nil; ADOConStu.Close; SaveData; end; end; end.南京理工大學計算機學院853.4.3ADODataSet組件
(4)運行程序
l
運行程序, 復選框已被選中,說明當前正對數(shù)據(jù)庫 進行操作。
l
不選擇 復選框,關閉程序,將會發(fā)現(xiàn)自動產(chǎn)生公 文包文件(d:\students.xml),可以用“記事本”打開該文件。
l
再次運行程序,復選框未被選中,說明當前已處于 脫離數(shù)據(jù)庫的狀態(tài),此時可修改數(shù)據(jù)。關閉程序后,修改 后的數(shù)據(jù)將寫入公文包中。
l
再次運行程序,選擇復選框,此時可修改數(shù)據(jù)。 關閉程序后,修改后的數(shù)據(jù)將寫入數(shù)據(jù)庫中,并且刪除公文 包文件。
南京理工大學計算機學院863.4.4ADOTable、ADOQuery和ADOStoredProc組件
ADOTable組件與Table組件的區(qū)別與ADOQuery組件與Query組件、ADOStoredProc組件與StoredProc組件的區(qū)別一樣。
ADOTable組件與Table組件的區(qū)別主要有:
(1)ADOTable組件通過ADO與數(shù)據(jù)庫相連,而Table組件則是依靠
BDE。
(2)ADOTable組件除具有與Table組件相同的、用于訪問數(shù)據(jù)庫數(shù)據(jù)的屬性和方法外,還有用于建立組件與ADO數(shù)據(jù)庫之間 聯(lián)系的屬性和方法,如Connection、CommandText、
CommandTimeout、CommandType、ConnectionString等等。
南京理工大學計算機學院873.4.5數(shù)據(jù)集組件的類結構
數(shù)據(jù)集組件的類結構圖:
南京理工大學計算機學院883.6通過ODBC訪問數(shù)據(jù)庫
3.6.1ODBC基本概念
ODBC(開放式數(shù)據(jù)庫連接)是一個數(shù)據(jù)庫編程接口,由Microsoft建議并開發(fā)。ODBC允許程序使用結構化查詢語言(SQL)作為數(shù)據(jù)訪問標準,應用程序可通過調(diào)用ODBC的接口函數(shù)來訪問來自不同數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)。對于任何一種客戶機/服務器關系數(shù)據(jù)庫管理系統(tǒng)RDBMS,還是最流行的索引順序訪問方法ISAM數(shù)據(jù)庫(如Jet、FoxPro)以及電子表格等,都有32位ODBC驅(qū)動程序。Windows動態(tài)鏈接庫(.DLL)組成了ODBCAPI,對ODBC驅(qū)動程序可用到的所有數(shù)據(jù)庫類型,動態(tài)連接包括兩組函數(shù),可以提供基本的數(shù)據(jù)庫服務。
南京理工大學計算機學院893.6.1ODBC基本概念數(shù)據(jù)庫服務
添加、配置和刪除ODBC數(shù)據(jù)源。一個數(shù)據(jù)源是對一個數(shù)據(jù)庫的有名連接,通常稱為數(shù)據(jù)源名稱(DSN)。管理從客戶前端到數(shù)據(jù)庫服務器的查詢語句和其他的SQL語句的通信,并且返回查詢結果或執(zhí)行動作要求的反向確認。ODBC驅(qū)動程序
ODBC驅(qū)動程序有單層ODBC和多層ODBC兩種。單層ODBC不能直接處理ANSISQL語句,它將ANSISQL語句轉(zhuǎn)換為一系列的低級指令,直接操作數(shù)據(jù)庫文件。Microsoft的單層ODBC驅(qū)動程序用于連接dbase、FoxPro、VisualFoxPro、Paradox、Excel和文本文件。多層ODBC驅(qū)動程序依靠客戶機/服務器RDBMS來處理ANSISQL語句。南京理工大學計算機學院903.6.2ODBC數(shù)據(jù)源配置以下是向ODBC添加新數(shù)據(jù)源e:\exceltest\student.xls的操作步驟:
(1)進入ODBC。單擊Windows系統(tǒng)開始
設置
控制面板
管理工具,進入“管理工具”窗口,雙擊“數(shù)據(jù)源(ODBC)”,打開“ODBC數(shù)據(jù)源管理器”對話框。
南京理工大學計算機學院913.6.2ODBC數(shù)據(jù)源配置
(2)添加數(shù)據(jù)源。在ODBC數(shù)據(jù)源管理器中單擊Add按鈕,進入如 圖所示的“創(chuàng)建新數(shù)據(jù)源”對話框,選擇MicrosoftExcelDriver
(*.xls)以創(chuàng)建安裝excel所需的驅(qū)動程序,單擊完成按鈕,進入“ODBCMicrosoftExcel安裝”對話框,如圖所示。
創(chuàng)建新數(shù)據(jù)源對話框ODBCMicrosoftExcel安裝對話框南京理工大學計算機學院923.6.2ODBC數(shù)據(jù)源配置
為這一數(shù)據(jù)源填上數(shù)據(jù)源名(本例為exStu);單擊“選擇工作簿”按鈕,進入選擇工作簿對話框,按圖所示,在其中選擇數(shù)據(jù)庫后,單擊確定按鈕。
選擇工作簿對話框
南京理工大學計算機學院933.6.2ODBC數(shù)據(jù)源配置
(3)至此新ODBC數(shù)據(jù)源exStu被創(chuàng)建,如圖所示。
成功創(chuàng)建新數(shù)據(jù)源
南京理工大學計算機學院943.6.3配置BDE與ODBC數(shù)據(jù)源的連接
下面配置BDE與剛建立的ODBC數(shù)據(jù)源exStu的連接。
(1)運行BDEAdministrator,打開Configuration頁,從左邊的樹 形結構中選擇Configuration
Drivers
ODBC,鼠標右鍵單 擊選擇彈出式菜單中New命令,如圖所示。
創(chuàng)建新的ODBC連接
南京理工大學計算機學院953.6.3配置BDE與ODBC數(shù)據(jù)源的連接
(2)系統(tǒng)將自動彈出“NewODBCDriver”對話框,在“ODBC DriverName”下拉列表框中選擇MicrosoftExcelDriver (*.xls),然后在“SelectDataSourcestoCreateA1iases” 列表框中選擇“exStu”,在DriverName文本框中輸入 “exStuODBC”,如圖所示,單擊OK按鈕。這時BDE Administrator將在Configuration
Drivers
ODBC下面創(chuàng)建 一個新的子項“exStuODBC”。
NewODBCDriver對話框
南京理工大學計算機學院963.6.3配置BDE與ODBC數(shù)據(jù)源的連接
(3)鼠標單擊BDEAdministrator的Database頁后,選擇主菜單 下的Object
New,彈出NewDatabaseAlias對話框,如圖 所示,選擇“exStuODBC”后,單擊OK按鈕。建立了一個數(shù)據(jù) 庫的別名。
NewDatabaseAlias對話框南京理工大學計算機學院973.6.3配置BDE與ODBC數(shù)據(jù)源的連接
(4)默認情況下,BDEAdministrator會給別名命名為“ODBCl”, 單擊鼠標右鍵,選擇ReName將“ODBCl”改成“excelStu”。 (5)設置“excelStu”的ODBCDSN,從ODBCDSN的下拉菜單中 選擇exStu。 (6)選擇主菜單下的Object
Apply命令,將彈出確認修改的對 話框,單擊OK按鈕,將創(chuàng)建的數(shù)據(jù)庫配置信息保存。這樣 就建立了一個基于ODBC數(shù)據(jù)庫的別名excelStu,可以同使用 BDE自帶的驅(qū)動程序創(chuàng)建的別名一樣使用這個別名。
南京理工大學計算機學院983.6.3配置BDE與ODBC數(shù)據(jù)源的連接
【例3.15】建立一個訪問e:\exceltest\student.xls的應用程序。使用已建立別名為excelStu的數(shù)據(jù)庫。應用程序主界面如圖所示,所使用的窗體、組件及其屬性值如表所示。
程序界面(設計時)
南京理工大學計算機學院993.6.3配置BDE與ODBC數(shù)據(jù)源的連接
窗體和組件對象屬性表
南京理工大學計算機學院1003.6.3配置BDE與ODBC數(shù)據(jù)源的連接說明:l
設置TabStu的TableName屬性時,需手工寫入Students$。工作表名Students后,一定要加上“$”。l
在GrdStu中瀏覽表格,表students中name字段每欄的寬度是
255個字符,有些不便。這種情況能通過修改字段的Size屬性來改變。l
如果從IDE運行應用程序,將發(fā)現(xiàn)ExcelISAM的第一個限制是
XLS文件應被以獨占方式打開。為了運行該程序,將首先需要關閉在IDE上被打開的應用程序,然后從WindowsExplorer運行它。l
當運行程序時,該ISAM驅(qū)動程序的另一個限制是能添加新行并編輯已有的行,但不能刪除行。南京理工大學計算機學院1013.7數(shù)據(jù)顯示/編輯組件
組件面板的DataControls頁中的組件主要用于顯示或編輯數(shù)據(jù)源提供的數(shù)據(jù),如圖所示。它們都是數(shù)據(jù)敏感組件,使用它們可以建立應用程序的用戶界面。數(shù)據(jù)顯示/編輯組件將數(shù)據(jù)表的數(shù)據(jù)顯示在窗體中,并實現(xiàn)與用戶間的交互。
DBNavigator
DBEdit
DBImage
DBRadioGroup
DBGrid
DBText
DBListBox
DBCheckBox
DBComboBox
DBMemo
南京理工大學計算機學院1023.7.1DBGrid組件
用網(wǎng)格的方式顯示數(shù)據(jù)表中指定字段的數(shù)據(jù),并能夠讓用戶編輯這些數(shù)據(jù)。
1.DBGrid組件屬性
DBGrid組件的主要屬性
南京理工大學計算機學院1033.7.1DBGrid組件屬性中Options取值
Options取值
南京理工大學計算機學院1043.7.1DBGrid組件
【例】在前面的例子中,對于數(shù)據(jù)表中的字段沒有進行選擇,而是將所有的字段均顯示在了DBGrid組件中。對于某些用戶界面,由于權限的限制或者使界面更加簡潔,往往只顯示數(shù)據(jù)庫表中的某些字段。如圖界面,在GrdStu中只顯示studentid、name、totalscore三個字段;并將顯示標題studentid、name、totalscore分別改為學號、姓名、總分。
界面參考圖南京理工大學計算機學院1053.7.1DBGrid組件
(1)鼠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 可行性研究合同范本
- 甘肅土地流轉(zhuǎn)合同范本
- 化肥農(nóng)藥購買合同范本
- 一般租賃合同范本
- 冷柜租賃合同范本
- 寫農(nóng)業(yè)合作社合同范本
- 名宿托管簽約合同范本
- 做微商城合同范本
- 供用熱合同范本
- 酒店轉(zhuǎn)讓經(jīng)營合同范本
- 《胸外按壓》課件
- 2024屆南通二模(又蘇北七市二模)數(shù)學試題
- 北師大版六年級下冊書法練習指導教案教學設計
- 江西省南昌市2024屆高三一模語文試題及答案解析
- 2023年小學音樂2022版新課程標準考試測試題及答案(共五套)
- 第一章村集體經(jīng)濟組織會計制度講解
- 湖北煙草公司招聘考試真題
- 2024年江蘇護理職業(yè)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- -藝術博覽會與藝術品拍賣
- 保健滋補品行業(yè)報告
- 2024智能燃氣表通用技術要求
評論
0/150
提交評論