用DAO操作數(shù)據(jù)庫_第1頁
用DAO操作數(shù)據(jù)庫_第2頁
用DAO操作數(shù)據(jù)庫_第3頁
用DAO操作數(shù)據(jù)庫_第4頁
用DAO操作數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第9章章 用用DAO操作數(shù)據(jù)庫操作數(shù)據(jù)庫 本章要點: DAO對象模型 DAO的各種對象的屬性和方法 DAO的各種對象的創(chuàng)建與使用 事務(wù)處理的概念和在DAO中實現(xiàn)事務(wù)處理的方法 錯誤處理的概念與錯誤處理的方法9.1 DAO體系結(jié)構(gòu)與對象模型 9.1.1 DAO體系結(jié)構(gòu)體系結(jié)構(gòu) 1VB的用戶界面和程序代碼 VB的用戶界面是應(yīng)用系統(tǒng)用來與用戶進(jìn)行交互的界面,主要以窗口的形式出現(xiàn),用于顯示數(shù)據(jù)供用戶查看或修改。2DAO數(shù)據(jù)庫引擎 數(shù)據(jù)庫引擎存在于應(yīng)用程序和物理數(shù)據(jù)庫文件之間,把用戶程序和正在訪問的特定數(shù)據(jù)庫隔離開來,從而實現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的“透明”操作。3數(shù)據(jù)庫 數(shù)據(jù)庫是包含數(shù)據(jù)庫表的一個或多個文

2、件。 9.1.2 DAO對象模型對象模型 DAO是一個分層的面向?qū)ο蟮臄?shù)據(jù)訪問模式,它把對于數(shù)據(jù)庫的操作分為若干層次,每一個層次為一類對象,具體的對象及分層關(guān)系如圖 :9.1.3 加載數(shù)據(jù)訪問對象加載數(shù)據(jù)訪問對象DAO 要使用DAO,首先必須把該對象加載到Visual Basic的工程中,加載方法為:執(zhí)行【工程】【引用】命令,將會出現(xiàn)如圖9-3所示的“引用”對話框,在該對話框中選中相應(yīng)的Microsoft DAO對象庫,圖9-3選中的是“Microsoft DAO 3.6 Object Library”。把“Microsoft DAO 3.6 Object Library”加載到工程中后,就可

3、以使用DAO進(jìn)行數(shù)據(jù)庫編程了。 9.2 DBEngine對象 9.2.1 常用屬性常用屬性1 1DefaultTypeDefaultType屬性屬性2DefaultPassword3DefaultUser4IniPath 5LoginTimeout6SystemDB 7Version 9.2.2 常用方法常用方法 1CreateWorkspace方法 使用格式如下:Set 工作區(qū)變量名 = CreateWorkspace(name, user, password, type) 2RepairDatabase方法 該方法的格式如下:DBEngine.RepairDatabase dbname 3

4、CompactDatabase方法 該方法的格式如下: DBEngine.CompactDatabase olddb, newdb, local, options, password 【例9-1】對當(dāng)前目錄下的“教學(xué)”數(shù)據(jù)庫進(jìn)行壓縮,要求壓縮后的數(shù)據(jù)庫還是原來的數(shù)據(jù)庫名。 分析:使用CompactDatabase方法可以壓縮數(shù)據(jù)庫,但該方法產(chǎn)生的壓縮后的數(shù)據(jù)庫為另一個數(shù)據(jù)庫名??稍趬嚎s后,用壓縮后的數(shù)據(jù)庫去覆蓋原來的數(shù)據(jù)庫,再把壓縮后的數(shù)據(jù)庫刪除。 9.2.3 集合對象集合對象 DBEngine對象包含的主要集合對象有:Rrrors(錯誤集合)、Properties(屬性集合)、Workspa

5、ces(工作區(qū)集合)。 【例9-2】列出DBEngine對象的所有屬性的工作區(qū)。 分析:可通過FOREACHIN循環(huán)輸出DBEngine的Properties集合中的每個屬性的屬性名,同樣可輸出DBEngine的Workspaces集合中的每個工作區(qū)對象的名稱。 例9-2程序運行結(jié)果 9.3 WorkSpace對象 9.3.1 常用屬性常用屬性 1Name屬性 該屬性用來設(shè)置或返回工作區(qū)對象的名字。 2UseName屬性 該屬性用來設(shè)置或返回Workspace對象的擁有者。 3Type屬性 該屬性用來指明Workspace對象操作的數(shù)據(jù)庫類型。 4IsFrozen屬性 表示工作區(qū)是否被鎖定,為

6、Boolean屬性,總是取值False,因為無法鎖定一個工作區(qū)。 9.3.2 常用方法1CreateDatabase方法 該方法的格式如下:Setdatabase=workspace.CreateDatabase(name,locale,options) 【例9-3】在當(dāng)前目錄下建立一個名為“人員管理”的數(shù)據(jù)庫。 2OpenDatabase方法 該方法的格式為:Setdatabase=workspace.OpenDatabase(name,options,read-only,connect) 【例9-4】以獨占且可讀可寫方式打開當(dāng)前目錄下的名為“教學(xué)”的數(shù)據(jù)庫。9.3.3 連接到數(shù)據(jù)庫連接到數(shù)

7、據(jù)庫 1用Microsoft Jet 數(shù)據(jù)庫引擎進(jìn)行連接 【例9-5】使用Microsoft Jet 數(shù)據(jù)庫引擎分別打開Access數(shù)據(jù)庫和“SQLPubs”數(shù)據(jù)源的Pubs數(shù)據(jù)庫。程序設(shè)計界面如9-4所示。 2用ODBC Direct進(jìn)行連接 【例9-6】使用ODBC直接與系統(tǒng)數(shù)據(jù)源“SQLPubs”的Pubs數(shù)據(jù)庫相連。程序的設(shè)計界面如圖9-6所示,程序的運行界面如圖9-7所示。 9.4 Database對象 9.4.1 常用屬性常用屬性 1CollatingOrder屬性 2Name屬性 3RecordsAffected屬性 4Updatable屬性 5V1xNullBehavior屬性

8、 6QueryTimeout屬性 9.4.2 常用方法常用方法 1Close方法 2Execute方法 3OpenRecordset方法 4CreateTableDef方法 5CreateQueryDef方法9.4.3 常用集合對象常用集合對象 最常用的集合對象有QueryDefs和TableDefs。其中Containers代表的是字段集合,Indexes代表的是索引集合,QueryDefs代表的是查詢集合,TableDefs代表的是表集合。 9.5 TableDef和TableDefs對象 9.5.1 TableDef對象及其創(chuàng)建方法對象及其創(chuàng)建方法 創(chuàng)建TableDef對象,可使用Dat

9、abase對象的CreateTableDef方法,該方法的格式如下:Settabledef=database.CreatTableDef(name,attributes,source,connect) 9.5.2 TableDef9.5.2 TableDef對象的常用屬性對象的常用屬性 1 1AttributesAttributes屬性屬性 2ValidationRule屬性 3ValidationText屬性 4Name屬性 9.5.3 TableDef對象的常用方法對象的常用方法 1CreateField方法 2CreateIndex方法 3OpenRecordset方法 9.5.4 Ta

10、bleDefs對象的常用屬和方法對象的常用屬和方法 1 1AppendAppend方法方法 格式如下:格式如下: TableDefs對象名對象名.Append TableDef變量名變量名 2Delete方法 格式如下: TableDefs對象名.Delete Tablename 【例9-7】設(shè)計一個顯示表名和刪除表的程序。程序的設(shè)計界面如圖9-8所示。程序運行時把當(dāng)前目錄下的教學(xué)數(shù)據(jù)庫中的所有表名顯示在列表框List1中,在Text1文本框中顯示表的數(shù)量。在列表框中選中一個表名后,單擊“刪除”按鈕將刪除對應(yīng)的表。 題意分析:為了在運行時在列表框中顯示數(shù)據(jù)庫中的所有表名,可通過一個For Ea

11、chIn循環(huán),把數(shù)據(jù)庫的TableDefs集合中的每個TableDef對象的Name屬性添加到列表框中,為顯示TableDef中表的數(shù)量,可使用TableDefs的Count屬性,為刪除表,可使用TableDefs和Delete方法。 9.6 Field和Fields對象 9.6.1 Field對象及其創(chuàng)建方法對象及其創(chuàng)建方法 添加字段的一般方法為: (1)關(guān)閉所有基于該表的記錄集;(2)用表對象的CreateField方法創(chuàng)建一個新的Field對象;(3)用字段集合對象Fields的Append方法把新建的Field對象加到Fields集合中。 TableDef對象的CreateField方

12、法的格式如下:Setfield=tabledef.CreateField(fieldname,fieldtype,fieldsize) 【例9-8】在當(dāng)前目錄下創(chuàng)建一個新數(shù)據(jù)庫“圖書管理.mdb”,并為該數(shù)據(jù)庫創(chuàng)建一個名為“圖書”的表,該表由三個字段組成:書號(文本型,15位)、書名(文本型、20位)、單價(整型)。 9.6.2 Field對象的常用屬性對象的常用屬性 1AllowZeroLength屬性 2Attributes屬性 3DataUpdatable屬性 4DefaultValue屬性 5FieldSize屬性 6Name屬性 7OrdialPosition屬性 8Required

13、屬性 9Size屬性 10Type屬性 11ValidationRule屬性 12ValidationText屬性 13ValidateOnSet屬性 9.6.3 Fields對象的常用屬性和方法對象的常用屬性和方法 1Append方法 具體的使用方法如下: OFields.Append oField 2Delete方法 具體的使用方法如下:OFields.Delete Fieldname 【例9-9】設(shè)計一個顯示和刪除數(shù)據(jù)庫中的表和字段的程序。程序的設(shè)計界面如圖9-12所示。程序運行時,把當(dāng)前目錄下名為“教學(xué)”數(shù)據(jù)庫中的表名顯示在List1列表框中,把表的數(shù)量顯示在文本框Text1中,在Li

14、st1中單擊選中表名時,將把選中表的所有字段名顯示在列表框List2中,選中表的字段數(shù)顯示在文本框Text2中。此時若按“刪除表”按鈕將刪除選中的表,按“刪除字段”按鈕將刪除選中的字段。 題意分析:顯示數(shù)據(jù)庫中的表名、表的數(shù)量及刪除表的方法可參見例9-7。為在運行時在列表框中顯示選中表的所有字段名,可通過一個For EachIn循環(huán),把表的Fields集合中的每個Field對象的Name屬性添加到列表框中,為顯示Fields中字段對象的數(shù)量,可使用集合對象Fields的Count屬性,為刪除字段,可使用Fields對象的delete方法。 9.7 Index和Indexes對象 9.7.1 I

15、ndex對象及其創(chuàng)建方法對象及其創(chuàng)建方法 創(chuàng)建索引可使用TableDef對象的CreateIndex方法來實現(xiàn),該方法的使用格式如下: Set index=tabledef.Createlndex(name) 可使用索引對象的CreateField方法來創(chuàng)建索引字段,該方法的使用格式如下: Set IndexField=Index.CreateField(name) 為表創(chuàng)建索引一般要經(jīng)過以下步驟: (1)調(diào)用表對象的CreateIndex方法創(chuàng)建索引名; (2)為該索引對象創(chuàng)建索引字段,有幾個字段就創(chuàng)建幾個字段; (3)調(diào)用索引對象下的集合對象Fields的Append方法,把索引字段依次添

16、加進(jìn)索引對象的Fields集合中; (4)調(diào)用表的索引集合的Append方法把索引對象添加到表的索引集合Indexes中。 【例9-10】為例9-8創(chuàng)建的數(shù)據(jù)庫“圖書管理”中的表“圖書”創(chuàng)建一個名為SM的索引,該索引按字段“書號”進(jìn)行升序索引。 題意分析:首先要打開相應(yīng)數(shù)據(jù)庫中的相應(yīng)表,然后按照創(chuàng)建索引的步驟為相應(yīng)表創(chuàng)建索引。 9.7.2 Index對象的常用屬性對象的常用屬性 1DistinctCount屬性 2Foreign屬性 3IgnoreNulls屬性 4Name屬性 5Primary屬性 6Required屬性 7Unique屬性 9.7.3 Index對象的常用方法對象的常用方法

17、 Index對象的常用方法有CreateField,該方法用來創(chuàng)建索引字段,使用方法見9.7.1。 9.7.4 Indexes對象的常用屬性和方法對象的常用屬性和方法1 1AppendAppend方法方法具體的使用方法如下:具體的使用方法如下: OindexesOindexes.Append .Append oindexoindex 2 2DeleteDelete方法方法具體的使用方法如下:具體的使用方法如下: OIndexesOIndexes.Delete .Delete IndexnameIndexname 題意分析:顯示數(shù)據(jù)庫中的表名、表的數(shù)量及刪除表的方法可參見例9-7。為在運行時在列

18、表框中顯示選中表的所有索引名,可通過一個For EachIn循環(huán),把表的Indexes集合中的每個Index對象的Name屬性添加到列表框中,為顯示Indexes中索引對象的數(shù)量,可使用集合對象Indexes的Count屬性,為刪除索引,可使用Indexes對象的delete方法。 9.8 QueryDef和QueryDefs對象 9.8.1 QueryDef對象及其創(chuàng)建方法對象及其創(chuàng)建方法 要創(chuàng)建QueryDef對象,可使用Database對象的CreateQueryDef方法。該方法的使用格式如下: setOQueryDef=ODatabase.CreateQueryDef(QueryDe

19、fname,Sqlstr) 【例9-12】為當(dāng)前目錄下的“教學(xué)”數(shù)據(jù)庫創(chuàng)建三個查詢,查詢名稱分別為:“自動化學(xué)生”、“學(xué)生必修課”和“課程01”。其中“自動化學(xué)生”查詢的功能是“列出自動化專業(yè)的全部學(xué)生的學(xué)號、姓名和年級”,“學(xué)生必修課”查詢的功能是“查詢出所有學(xué)生的必修課的學(xué)習(xí)情況,查詢結(jié)果中包含學(xué)號、姓名、課號和成績”,“課程01”查詢的功能是“列出選修01號課的學(xué)生姓名及成績”。 9.8.2 QueryDef對象的常用屬性對象的常用屬性 1MaxRecords屬性 2Name屬性 3RecordAffected屬性 4SQL屬性 5Type屬性 6Updatable屬性 9.8.3 Qu

20、eryDef對象的常用方法對象的常用方法 1OpenRecordset方法 該方法執(zhí)行查詢并產(chǎn)生一個記錄集 2Execute方法 該方法用來運行SQL查詢,有一個可選的參數(shù),該方法使用的場合不多,此書不再介紹。 9.8.4 QueryDefs對象的常用屬性和方法對象的常用屬性和方法 該方法的使用格式如下: OQueryDefs.Delete QueryDefname 【例9-13】設(shè)計一個顯示表的查詢名和刪除查詢的程序。程序的設(shè)計界面如圖9-18所示。程序運行時把當(dāng)前目錄下的“教務(wù)管理”數(shù)據(jù)庫中的所有查詢名顯示在列表框List1中,在Text1文本框中顯示查詢的數(shù)量。在列表框中選中一個查詢后,

21、單擊“刪除”按鈕將刪除對應(yīng)的查詢。 題意分析:為在運行時在列表框中顯示數(shù)據(jù)庫中的所有查詢名,可通過一個For EachIn循環(huán),把數(shù)據(jù)庫的QueryDefs集合中的每個QueryDef對象的Name屬性添加到列表框中,為顯示QueryDefs中查詢的數(shù)量,可使用QueryDefs的Count屬性,為刪除查詢,可使用QueryDefs的Delete方法。 9.9 Relation對象 9.9.1 Relation對象的常用屬性對象的常用屬性 1Attributes屬性 2Table屬性 3ForeignTable屬性 4Name屬性 9.9.2 Relation對象的常用方法對象的常用方法 Re

22、lationRelation對象有一個方法對象有一個方法CreateFieldCreateField,該方法用,該方法用來創(chuàng)建建立關(guān)系的字段。創(chuàng)建的字段名的名稱必須是來創(chuàng)建建立關(guān)系的字段。創(chuàng)建的字段名的名稱必須是主表中的建立關(guān)系的字段名稱,并且建立的字段應(yīng)添主表中的建立關(guān)系的字段名稱,并且建立的字段應(yīng)添加到加到RelationRelation對象的對象的FieldsFields集合中。集合中。 9.9.3 Relation對象的建立方法對象的建立方法 建立一個關(guān)系一般需經(jīng)過以下幾驟: (1)打開數(shù)據(jù)庫; (2)調(diào)用數(shù)據(jù)庫對象CreateRelation方法創(chuàng)建一個關(guān)系(主表中的相關(guān)字段必須建立

23、了唯一索引); (3)調(diào)用關(guān)系變量的CreateField方法創(chuàng)建一個關(guān)系字段; (4)把創(chuàng)建的關(guān)系字段添加到關(guān)系的集合變量Fields中; (5)設(shè)置關(guān)系字段對象的ForeignName屬性為從表的相應(yīng)字段; (6)把建立的關(guān)系添加到數(shù)據(jù)庫的關(guān)系集合中。 【例9-14】為教務(wù)管理數(shù)據(jù)庫的“課程”表和“必修課成績”建立關(guān)系,關(guān)聯(lián)的字段為“課號”,關(guān)系的類型為“級聯(lián)更新”,已知“課程”表的內(nèi)容如圖9-20所示,“必修課成績”表的內(nèi)容如圖9-21所示,且“課程”表已按照“課號”進(jìn)行了索引(無重復(fù))。 題意分析:“課程”表應(yīng)為主表,“必修課成績”表應(yīng)為從表,關(guān)系字段為“課號”。 9.10 Recor

24、dSet對象 9.10.1 RecordSet對象的概念和類型對象的概念和類型 RecordSet對象是一批記錄的集合,在結(jié)構(gòu)上是由一系列的記錄和字段組成。RecordSet對象中的記錄可以直接從數(shù)據(jù)庫的表中取得,也可以通過查詢返回。 根據(jù)對記錄的存取和控制方式,RecordSet對象可以分成五種基本類型,分別是表型、動態(tài)集類型、快照型、僅向前型和動態(tài)類型。 9.10.2 RecordSet對象的創(chuàng)建對象的創(chuàng)建 使用Database對象創(chuàng)建記錄集的格式如下: Set recordset=database.OpenRecordset(source,type,options,Lockedits)使

25、用TableDef對象創(chuàng)建記錄集的格式如下:Set recordset=TableDef.OpenRecordset(type,options,Lockedits)使用QueryDef對象創(chuàng)建記錄集的格式如下:Set recordset=QueryDef.OpenRecordset(type,options,Lockedits) 【例9-15】編寫一個程序,把“教務(wù)管理”數(shù)據(jù)庫中的“學(xué)生”表中的所有學(xué)生的姓名顯示在窗口中的List1列表框中,把“課程”表中的所有課程名顯示在List2列表框中。已知“教務(wù)管理”數(shù)據(jù)庫已經(jīng)在當(dāng)前目錄下,要求使用Recordset對象來實現(xiàn)。程序的設(shè)計界面如圖9-2

26、3所示。 題意分析:為使在程序一開始運行時就在列表框中顯示要求的內(nèi)容,可在窗體的Load事件中進(jìn)行編程。顯示某表中的內(nèi)容,可把該表以記錄集的形式打開。為把記錄集中的某一字段內(nèi)容列出來,可通過一個循環(huán),在循環(huán)中引用該字段的Value屬性就得到當(dāng)前記錄的值,然后通過調(diào)用MoveNext方法把記錄指針移到下一條記錄,循環(huán)的結(jié)束條件應(yīng)該是記錄指針移到記錄集的末尾。 9.10.3 RecordSet對象的常用屬性對象的常用屬性 1Bookmark屬性 2Bookmarkable屬性 3LastModified屬性 4DateCreated屬性 5LastUpdated屬性 6Filter屬性 7Sort

27、屬性 8Name屬性 9AbsolutePosition屬性 10PercentPosition屬性 11Restartable屬性 12Transactions屬性 13Type屬性 14Updatable屬性 9.10.4 RecordSet對象的常用方法對象的常用方法 1CancelUpdate方法 該方法的使用格式如下: Recordset.cancelUpdate 2Clone方法 該方法的使用格式如下:Set desRecordset= resRecordset.Clone (LockType) 3GetRows方法 4Requery方法 該方法的使用格式如下: Recordset

28、.requery 9.11 DAO事務(wù)處理 9.11.1 事務(wù)的概念與事務(wù)的概念與VB中的事務(wù)處理方法中的事務(wù)處理方法 1事務(wù)的概念 所謂事務(wù),是指捆綁在一起的一組操作,在應(yīng)用程序中,一個事務(wù)作為一個整體進(jìn)行執(zhí)行,被看作是一個任務(wù)單元。 2事務(wù)處理方法 (1)BeginTrans方法 該方法的格式如下: Workspace.BeginTrans (2)CommitTrans方法 該方法的格式如下: Workspace.CommitTrans (3)Rollback方法 該方法的格式如下: Workspace.Rollback 9.11.2 事務(wù)處理方法例事務(wù)處理方法例 【例9-16】編寫一個程序,把“教學(xué)”數(shù)據(jù)庫中“教師表”的工資信息進(jìn)行修改,從而實現(xiàn)加工資的功能。加工資的方法是:講師的工資增加20%,其他人的工資增加10%。要求對工資的修改作為一個事務(wù),最后通過對話框確認(rèn)事務(wù)提交或撤消。 題意分析:用“教師表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論