




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 1 應(yīng)用背景與需求說(shuō)明在單機(jī)上實(shí)現(xiàn)一個(gè)教學(xué)管理系統(tǒng)的例子,并且可以很容易地把它移植到C/S結(jié)構(gòu)中,只涉及教學(xué)管理中的對(duì)學(xué)生、課程和教師的管理部分:項(xiàng)目的具體要求是:.運(yùn)行環(huán)境是Windows 95/98操作系統(tǒng),數(shù)據(jù)庫(kù)的前端開(kāi)發(fā)環(huán)境是VB 。一門(mén)課程可由多名教師來(lái)講授。 一個(gè)教師可講授多門(mén)課程。 一個(gè)學(xué)生可以選修多門(mén)課程。需產(chǎn)生的報(bào)表有.每學(xué)期開(kāi)學(xué)時(shí)要生成學(xué)生修課情況表,內(nèi)容包括學(xué)號(hào)、姓名、課程名、修課類(lèi)別,其中修課類(lèi)別分為必修、選修、重修。.每學(xué)期結(jié)束時(shí)要生成學(xué)生修課成績(jī)表,內(nèi)容包括學(xué)號(hào)、姓名、課程名、修課類(lèi)別、平時(shí)成績(jī)、卷面成績(jī)、總評(píng)成績(jī)。 生成教師授課服務(wù)
2、表,內(nèi)容包括教師號(hào)、教師名、課程名、授課類(lèi)別、學(xué)時(shí)數(shù)、班數(shù),授課類(lèi)別分為主講、輔導(dǎo)、帶實(shí)驗(yàn)。安全性要求 本門(mén)課程的主講教師才具有對(duì)其所講授課程的成績(jī)的修改權(quán),教學(xué)秘書(shū)和系主任才有修改教師授課服務(wù)表中的內(nèi)容的權(quán)力。其它人只有查詢(xún)有關(guān)信息的權(quán)力。 2 數(shù)據(jù)庫(kù)設(shè)計(jì) 2.1 概念設(shè)計(jì)概念設(shè)計(jì)核心活動(dòng):是系統(tǒng)中的其它活動(dòng)都是圍繞這個(gè)活動(dòng)展開(kāi)的或與此活動(dòng)是密切相關(guān)的活動(dòng)確定系統(tǒng)的核心活動(dòng):確定系統(tǒng)的核心活動(dòng):對(duì)現(xiàn)實(shí)系統(tǒng)分析的關(guān)鍵該教學(xué)管理系統(tǒng)中,核心活動(dòng)就是授課,學(xué)生與課程之間是通過(guò)授課發(fā)生聯(lián)系的,教師與課程之間是通過(guò)教師授課發(fā)生聯(lián)系的。系統(tǒng)所包含的實(shí)體: 課程:課程:元素為由一個(gè)主講教師負(fù)責(zé)且教學(xué)內(nèi)容相
3、同的教學(xué)活動(dòng) 單位,用課程號(hào)來(lái)標(biāo)識(shí)此實(shí)體。 學(xué)生:學(xué)生:元素為一個(gè)學(xué)生,由學(xué)號(hào)來(lái)標(biāo)識(shí)。 教師:教師:元素為一個(gè)教師,由教師號(hào)來(lái)標(biāo)識(shí)。初步初步ER圖圖:學(xué)生修課課程授課教師nmnm課程號(hào)、課程名、講授學(xué)期、學(xué)時(shí)數(shù)學(xué)號(hào)、姓名、系、專(zhuān)業(yè)、班級(jí)教師號(hào)、教師名、系、教研室 2 數(shù)據(jù)庫(kù)設(shè)計(jì) 2.2 設(shè)計(jì)關(guān)系模式設(shè)計(jì)基本關(guān)系模式主要就是從ER圖出發(fā),將其直接轉(zhuǎn)換為關(guān)系模式。轉(zhuǎn)換的規(guī)則為: 1.將每個(gè)實(shí)體都轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的主碼就是關(guān)系的主碼。 2.將每個(gè)聯(lián)系也轉(zhuǎn)換為一個(gè)關(guān)系模式,該關(guān)系模式的屬性由與該聯(lián)系相連的各個(gè)實(shí)體的主碼及該聯(lián)系的屬性組成,該聯(lián)系的主碼分三種情況:. 若
4、聯(lián)系是1:1的,則每個(gè)實(shí)體的主碼即是該聯(lián)系的候選碼。. 若聯(lián)系是1:n的,則此聯(lián)系的主碼是n端實(shí)體的主碼。. 若聯(lián)系是m:n的,則此聯(lián)系的主碼是各個(gè)實(shí)體的主碼的并。此此E ER R圖的關(guān)系模式為:圖的關(guān)系模式為:(1)課程(課程號(hào),課程名,講授學(xué)期,學(xué)時(shí)數(shù)),主碼為課程號(hào)。(2)學(xué)生(學(xué)號(hào)、姓名、系、專(zhuān)業(yè)、班),主碼為學(xué)號(hào)。(3)教師(教師號(hào)、教師名、系、教研室),主碼為教師號(hào)。(4)修課(學(xué)號(hào),課程號(hào),修課類(lèi)別,平時(shí)成績(jī),卷面成績(jī),總評(píng)成績(jī)),主碼為(學(xué)號(hào),課程號(hào))。 (5)授課(課程號(hào),教師號(hào),授課類(lèi)別,班數(shù)),主碼為(課程號(hào),教師號(hào))。 2.2 設(shè)計(jì)關(guān)系模式確定表中各屬性的詳細(xì)信息(1)
5、(1)課程表課程表課程號(hào):字符串型,10字節(jié),主碼課程名:字符串型,20字節(jié),非空講授學(xué)期:字符串型,2字節(jié),非空學(xué)時(shí)數(shù):整型,非空(2) (2) 學(xué)生表學(xué)生表學(xué)號(hào):字符串型,10字節(jié),主碼姓名:字符串型,20字節(jié),非空系:字符串型,20字節(jié),非空專(zhuān)業(yè):字符串型,20字節(jié),非空班:字符串型,10字節(jié),非空(3) (3) 教師表教師表教師號(hào):字符串型,10字節(jié),主碼教師名:字符串型,20字節(jié),非空 系:字符串型,20字節(jié)教研室:字符串型,10字節(jié)(4) (4) 修課表修課表學(xué)號(hào):字符串型,10字節(jié),主碼,學(xué)生表的外碼課程號(hào):字符串型,10字節(jié),主碼,課程表的外碼修課類(lèi)別:字符串型,4字節(jié),非空平
6、時(shí)成績(jī):浮點(diǎn)型,大于等于0,小于等于100卷面成績(jī):浮點(diǎn)型,大于等于0,小于等于100總評(píng)成績(jī):浮點(diǎn)型,大于等于0,小于等于100 (5) (5) 授課表授課表課程號(hào):字符串型,10字節(jié),主碼,課程表的外碼教師號(hào):字符串型,10字節(jié),主碼,教師表的外碼授課類(lèi)別:字符串型,10字節(jié)班數(shù):浮點(diǎn)型,大于0。假設(shè)選修課有半個(gè)班的情況,因此取浮點(diǎn)型。 2.3 確定數(shù)據(jù)庫(kù)應(yīng)用的功能最常用的功能就是對(duì)數(shù)據(jù)的增、刪、改、查及生成報(bào)表1.數(shù)據(jù)錄入(增加)2.數(shù)據(jù)刪除3.數(shù)據(jù)修改4.數(shù)據(jù)查詢(xún)5.生成報(bào)表本例三張報(bào)表本例三張報(bào)表:(1) 學(xué)生修課表(學(xué)號(hào),姓名,課程名,修課類(lèi)別)(2) 學(xué)生成績(jī)表(學(xué)號(hào),姓名,課程
7、名,修課類(lèi)別,平時(shí)成績(jī),卷面成績(jī),總評(píng)成績(jī))(3) 教師授課服務(wù)表(教師號(hào),教師名,課程名,授課類(lèi)別,學(xué)時(shí)數(shù),班數(shù))創(chuàng)建視圖的創(chuàng)建視圖的SQLSQL語(yǔ)句可描述為:語(yǔ)句可描述為:CREATE VIEW 學(xué)生修課表學(xué)生修課表(學(xué)號(hào),姓名,課程名,修課類(lèi)別)ASSELECT 學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名,修課.修課類(lèi)別 FROM 學(xué)生,課程,修課 WHERE 學(xué)生.學(xué)號(hào) = 修課.學(xué)號(hào) AND 課程.課程號(hào) = 修課.課程號(hào)包括對(duì)張表的數(shù)據(jù)錄入有條件刪除,有權(quán)限限制,有刪除確認(rèn)有條件查詢(xún)后修改,有權(quán)限限制,修改后保存根據(jù)用戶(hù)提出的條件查詢(xún),所有用戶(hù)都有查詢(xún)權(quán)限用數(shù)據(jù)庫(kù)開(kāi)發(fā)工具生成報(bào)表對(duì)對(duì)“學(xué)
8、生成績(jī)表學(xué)生成績(jī)表”和和“教師授課服務(wù)表教師授課服務(wù)表”的處理與此類(lèi)似的處理與此類(lèi)似 3 數(shù)據(jù)庫(kù)開(kāi)發(fā)環(huán)境在C/S環(huán)境下實(shí)現(xiàn)時(shí)應(yīng)注意數(shù)據(jù)的分布 將數(shù)據(jù)全部放在服務(wù)器上-中央數(shù)據(jù)庫(kù)中央數(shù)據(jù)庫(kù) 將數(shù)據(jù)全部集中管理,數(shù)據(jù)只有一份,比如實(shí)時(shí)采集的數(shù)據(jù)一般都應(yīng)該放在服務(wù)器端。 將一部分?jǐn)?shù)據(jù)放在服務(wù)器上,另一部分?jǐn)?shù)據(jù)放在客戶(hù)機(jī)上-地方數(shù)據(jù)庫(kù)地方數(shù)據(jù)庫(kù) 將數(shù)據(jù)分散管理,只將重要的、所有部門(mén)共享的數(shù)據(jù)放在中央數(shù)據(jù)庫(kù)中,將各個(gè)部門(mén)自己需要的數(shù)據(jù)放在地方數(shù)據(jù)庫(kù)中。例:例:本教學(xué)管理系統(tǒng)中,將所設(shè)計(jì)的五張表放在服務(wù)器,便于全校統(tǒng)一管理,各部門(mén)本教學(xué)管理系統(tǒng)中,將所設(shè)計(jì)的五張表放在服務(wù)器,便于全校統(tǒng)一管理,各部門(mén)共享,
9、同時(shí)各部門(mén)有自己的地方數(shù)據(jù)庫(kù)。共享,同時(shí)各部門(mén)有自己的地方數(shù)據(jù)庫(kù)。 如“修課表”,中央和地方各有一個(gè),且兩者結(jié)構(gòu)一致,當(dāng)?shù)胤秸n程數(shù)據(jù)庫(kù)修改時(shí),能及時(shí)修改中央數(shù)據(jù)庫(kù),在保持?jǐn)?shù)據(jù)的一致性。將數(shù)據(jù)分為中央數(shù)據(jù)庫(kù)和地方數(shù)據(jù)庫(kù)的好處:減少對(duì)中央數(shù)據(jù)庫(kù)的操作次數(shù),先在地方數(shù)據(jù)庫(kù)中錄入數(shù)據(jù)有關(guān)數(shù)據(jù)(比如本系的修課情況表),當(dāng)確認(rèn)準(zhǔn)確無(wú)誤之后再送到中央數(shù)據(jù)庫(kù)中。數(shù)據(jù)一旦被送到中央數(shù)據(jù)庫(kù)就不能被隨便地修改和刪除,這也增加了中央數(shù)據(jù)庫(kù)數(shù)據(jù)的安全性和可靠性。數(shù)據(jù)過(guò)于龐雜易于各部門(mén)開(kāi)發(fā)自己專(zhuān)用的地方數(shù)據(jù)庫(kù)分類(lèi) 3.1 Visual Basic中的數(shù)據(jù)訪問(wèn)Jet Jet :Visual Basic 提供的數(shù)據(jù)庫(kù)引擎Je
10、tJet數(shù)據(jù)庫(kù)引擎接口的方法數(shù)據(jù)庫(kù)引擎接口的方法:Data控件(Data Control)和數(shù)據(jù)訪問(wèn)對(duì)象(DAO)VB中數(shù)據(jù)庫(kù)編程的內(nèi)容:創(chuàng)建數(shù)據(jù)訪問(wèn)對(duì)象,這些數(shù)據(jù)訪問(wèn)對(duì)象對(duì)應(yīng)于被訪問(wèn)的物理數(shù)據(jù)庫(kù)的不同部分,如:用這些對(duì)象的屬性和方法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。VBVB可以識(shí)別三類(lèi)數(shù)據(jù)庫(kù):可以識(shí)別三類(lèi)數(shù)據(jù)庫(kù):1.Visual Basic數(shù)據(jù)庫(kù):2.外部數(shù)據(jù)庫(kù):3.ODBC數(shù)據(jù)庫(kù):符合ODBC標(biāo)準(zhǔn)的客戶(hù)/服務(wù)器數(shù)據(jù)庫(kù)提供有限的不需編程就能訪問(wèn)現(xiàn)存數(shù)據(jù)庫(kù)的功能DAO模型則是全面控制數(shù)據(jù)庫(kù)的完整編程接口Database(數(shù)據(jù)庫(kù))、TableDef(表)、Field(字段)Index(索引)對(duì)象。數(shù)據(jù)庫(kù)文件
11、使用與Microsoft Access相同的格式dBase III或IVFoxPro 2.0和2.5Paradox版本3.x和4.xMicrosoft ExcelLotus 1-2-3Microsoft SQL Server 3.2 Visual Basic 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)JetJet引擎的作用:引擎的作用:處理存儲(chǔ)、檢索、更新數(shù)據(jù)的結(jié)構(gòu),并提供了功能強(qiáng)大的、面向?qū)ο蟮腄AO編程接口VBVB數(shù)據(jù)庫(kù)應(yīng)用程序的組成數(shù)據(jù)庫(kù)應(yīng)用程序的組成用戶(hù)界面Jet 引擎數(shù)據(jù)庫(kù)實(shí)現(xiàn)“透明”訪問(wèn)(讀取、寫(xiě)入或修改數(shù)據(jù)庫(kù),處理所有內(nèi)部事物)顯示數(shù)據(jù)并允許用戶(hù)查看或更新數(shù)據(jù)窗體VB中添加或刪除記錄,執(zhí)行查詢(xún)等Jet包含在
12、一組DLL文件中,被鏈接到VB程序,把應(yīng)用程序譯成.mdb文件或其它數(shù)據(jù)庫(kù)的物理操作。 包含數(shù)據(jù)表的一個(gè)或多個(gè)文件2.2.數(shù)據(jù)庫(kù)應(yīng)用程序的存放數(shù)據(jù)庫(kù)應(yīng)用程序的存放 遠(yuǎn)程數(shù)據(jù)庫(kù) 客戶(hù)機(jī)/服務(wù)器數(shù)據(jù)庫(kù) 3.2 Visual Basic 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)引擎用戶(hù)界面數(shù)據(jù)庫(kù)用戶(hù)界面數(shù)據(jù)庫(kù)引擎客戶(hù)/服務(wù)器服務(wù)器 客戶(hù)機(jī) 遠(yuǎn)程 客戶(hù)/服務(wù)器與遠(yuǎn)程數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的存放可同時(shí)對(duì)多個(gè)客戶(hù)機(jī)的應(yīng)用程序提供服務(wù),操作數(shù)據(jù)庫(kù)并對(duì)每個(gè)應(yīng)用程序返回所請(qǐng)求的記錄 4 創(chuàng)建數(shù)據(jù)庫(kù)VB中創(chuàng)建數(shù)據(jù)庫(kù)途徑:中創(chuàng)建數(shù)據(jù)庫(kù)途徑:1、可視化數(shù)據(jù)管理器2、DAO3、Microsoft Access4 、外部數(shù)據(jù)庫(kù)應(yīng)用程序不編程即可
13、創(chuàng)建Jet引擎使用VB的DAO部件可以通過(guò)編程的方法創(chuàng)建數(shù)據(jù)庫(kù)用 Access創(chuàng)建的數(shù)據(jù)庫(kù)和直接在VB中創(chuàng)建的數(shù)據(jù)庫(kù)一樣,兩者用的數(shù)據(jù)庫(kù)引擎與格式一樣VB可通過(guò)ISAM或ODBC驅(qū)動(dòng)程序來(lái)訪問(wèn)FoxPro、dBASE或ODBC客戶(hù)/服務(wù)器應(yīng)用程序 4.1 可視化數(shù)據(jù)管理器數(shù)據(jù)管理器(Data Manager)可以用于快速地建立數(shù)據(jù)庫(kù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)內(nèi)容。VB的數(shù)據(jù)管理器是一個(gè)獨(dú)立的可單獨(dú)運(yùn)行的應(yīng)用程序Visdata.exe。隨安裝過(guò)程放置在VB目錄中,可以單獨(dú)運(yùn)行,也可以在VB開(kāi)發(fā)環(huán)境中啟動(dòng)它。凡是VB有關(guān)數(shù)據(jù)庫(kù)的操作,比如數(shù)據(jù)庫(kù)結(jié)構(gòu)的建立、記錄的添加及修改以及使用ODBC連接到服務(wù)器端的數(shù)據(jù)庫(kù),
14、如SQL Server,都可以利用此工具來(lái)完成。啟動(dòng)數(shù)據(jù)管理器的方法:?jiǎn)?dòng)數(shù)據(jù)管理器的方法: 打開(kāi)VB 外接程序可視化數(shù)據(jù)管理器 VisData 窗體工具欄提供了三組9個(gè)按鈕在下圖中介紹 以VB提供的Biblio.mdb數(shù)據(jù)庫(kù)為實(shí)例介紹。 文件打開(kāi)數(shù)據(jù)庫(kù)VB目錄下的Biblio.mdb 確定表類(lèi)型記錄集動(dòng)態(tài)集類(lèi)型記錄集快照類(lèi)型記錄集顯示數(shù)據(jù)表數(shù)據(jù)群組按鈕打開(kāi) Biblio.mdb 后的 VisData 窗口窗體窗口事務(wù)方式群組按鈕所進(jìn)行的增、刪、改、查等操作直接更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)在內(nèi)存中操作,不直接影響數(shù)據(jù)庫(kù)只能讀,不能改進(jìn)行事物處理圖 1 數(shù)據(jù)管理器1、建立數(shù)據(jù)庫(kù)建立數(shù)據(jù)結(jié)構(gòu)建立數(shù)據(jù)結(jié)構(gòu)文件
15、新建Microsoft Access 版本7.0 輸入存儲(chǔ)的文件名如圖 1添加數(shù)據(jù)表添加數(shù)據(jù)表鼠標(biāo)右鍵新表出現(xiàn)“結(jié)構(gòu)表” 表名稱(chēng)表名稱(chēng):課程單擊“添加字段” 輸入字段內(nèi)容名稱(chēng)名稱(chēng):課程名、授課學(xué)期、學(xué)時(shí)數(shù)等類(lèi)型類(lèi)型:text或integer大大小?。翰欢ń⑺饕⑺饕龜?shù)據(jù)庫(kù)窗口在窗體上使用DBGrid控件課程鼠標(biāo)右鍵打開(kāi)顯示下圖錄入數(shù)據(jù)3.建立查詢(xún)對(duì)已有數(shù)據(jù)的數(shù)據(jù)表進(jìn)行有條件或無(wú)條件查詢(xún) VisData窗口實(shí)用程序查詢(xún)生成器(右鍵新查詢(xún))輸入查詢(xún)條件 4.2 數(shù)據(jù)訪問(wèn)對(duì)象DAODAO的引入:的引入:數(shù)據(jù)管理器:只適合于做比較簡(jiǎn)單的應(yīng)用,如果要實(shí)現(xiàn)復(fù)雜的應(yīng)用系統(tǒng),使用VB提供的數(shù)據(jù)訪問(wèn)對(duì)象(D
16、AO),DAO是通過(guò)編程來(lái)直接控制JET數(shù)據(jù)庫(kù)引擎,來(lái)實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。DAODAO的分層結(jié)構(gòu):的分層結(jié)構(gòu): 數(shù)據(jù)訪問(wèn)對(duì)象是以分層形式組織而成的,大多數(shù)對(duì)象成員都是一個(gè)對(duì)象類(lèi)別的集合,而這個(gè)集合又隸屬于上一層的另一個(gè)對(duì)象類(lèi)別, 大多數(shù)數(shù)據(jù)訪問(wèn)對(duì)象被描述為“對(duì)象和集合”。分層結(jié)構(gòu)的頂部是Microsoft Jet數(shù)據(jù)庫(kù)引擎本身DBEngine對(duì)象。它是唯一不被其它對(duì)象所包含的數(shù)據(jù)訪問(wèn)對(duì)象 對(duì)象分層結(jié)構(gòu)通過(guò)“包含”一種其它對(duì)象的“集合”實(shí)現(xiàn),集合對(duì)象用于包含其它對(duì)象,集合中的對(duì)象都是同一類(lèi)型的。 DAO分層結(jié)構(gòu)中的元素實(shí)際上是類(lèi),而不是對(duì)象,它們是對(duì)象的“藍(lán)圖”。類(lèi)與數(shù)據(jù)類(lèi)型類(lèi)似,它只描述
17、所引用的對(duì)象的“類(lèi)型”。例如,例如,聲明 Dim MyWs As WorkspaceMyWs是一個(gè)代表Workspace類(lèi)型的對(duì)象的變量DBEngine對(duì)象WorkSpaces集合對(duì)象WorkSpace對(duì)象DataBases集合對(duì)象DataBase對(duì)象RecordSets集合對(duì)象QueryDefs集合對(duì)象TableDefs集合對(duì)象Relations集合對(duì)象Contains集合對(duì)象RecordSets對(duì)象QueryDefs對(duì)象TableDefs對(duì)象Relations對(duì)象Contains對(duì)象FieldFieldParamterFieldIndexFieldDocumentField. . . DA
18、O分層結(jié)構(gòu)圖DAO創(chuàng)建數(shù)據(jù)庫(kù)的步驟:創(chuàng)建數(shù)據(jù)庫(kù)的步驟:創(chuàng)建新數(shù)據(jù)庫(kù)的第一步是創(chuàng)建Database對(duì)象本身,然后添加與設(shè)計(jì)相一致的TableDef和Field對(duì)象來(lái)定義其結(jié)構(gòu),方法:1 1、使用、使用DimDim語(yǔ)句給數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象創(chuàng)建對(duì)象變量語(yǔ)句給數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象創(chuàng)建對(duì)象變量。除了構(gòu)造構(gòu)成環(huán)境的DBEnigne和缺省的Workspace對(duì)象外,還需要: 一個(gè)Database對(duì)象每個(gè)表需要一個(gè)TableDef對(duì)象每個(gè)表中的每個(gè)字段需要一個(gè)Field對(duì)象每個(gè)表中的每個(gè)索引需要一個(gè)Index對(duì)象如如:用如下代碼創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)對(duì)象變量:(數(shù)據(jù)庫(kù)名:數(shù)據(jù)庫(kù)名: JXGL.mdbJXGL.mdb
19、 )Dim MyDb As Database, MyWs As WorkspaceDim StuTd As TableDef, TeaTd As TableDef, CosTd As TableDef, XKTd As TableDef, SKTd As TableDef Dim StuFlds(5) As Field, TeaFlds(4) As Field, CosFlds(4) As Field, XKFlds(5) As Field, SKFlds(5) As FieldDim StuIdx As Index, TeaIdx As Index, CosIdx As Index, XKI
20、dx(2) As Index, SKIdx(2) As Index 4.2 數(shù)據(jù)訪問(wèn)對(duì)象 4.2 數(shù)據(jù)訪問(wèn)對(duì)象 DAO創(chuàng)建數(shù)據(jù)庫(kù)的步驟創(chuàng)建數(shù)據(jù)庫(kù)的步驟2 2、使用、使用WorkspaceWorkspace對(duì)象的對(duì)象的CreateDatabaseCreateDatabase方法創(chuàng)建新的數(shù)據(jù)庫(kù)。方法創(chuàng)建新的數(shù)據(jù)庫(kù)。Set MyWs = DBEngine.Eorkspaces(0)Set MyDb = MyWs.CreateDatabase(“C:VBJXGL.mdb”,dbLangGeneral,dbVersion03)3 3、使用、使用DatabaseDatabase對(duì)象的對(duì)象的CreateTa
21、bleDefCreateTableDef方法為數(shù)據(jù)庫(kù)中的所有表創(chuàng)建新的方法為數(shù)據(jù)庫(kù)中的所有表創(chuàng)建新的TableDefTableDef對(duì)象。對(duì)象。如本例中:Set StuTd = MyDB.CreateTableDef(“學(xué)生”)Set TeaTd = MyDB.CreateTableDef(“教師”)Set CosTd = MyDB.CreateTableDef(“課程”)Set XKTd = MyDB.CreateTableDef(“修課”)Set SKTd = MyDB.CreateTableDef(“授課”)4、使用使用TableDefTableDef對(duì)象的對(duì)象的CreateFieldC
22、reateField方法,為表中每個(gè)字段創(chuàng)建方法,為表中每個(gè)字段創(chuàng)建FieldField對(duì)象,然后設(shè)對(duì)象,然后設(shè)置每個(gè)字段的屬性來(lái)定義字段的長(zhǎng)度、數(shù)據(jù)類(lèi)型和其它所需的屬性。置每個(gè)字段的屬性來(lái)定義字段的長(zhǎng)度、數(shù)據(jù)類(lèi)型和其它所需的屬性。例如,下面的代碼用來(lái)創(chuàng)建JXGL.mdb數(shù)據(jù)庫(kù)中的課程表:Set CosFlds(0) = CosTd.CreateField(“課程號(hào)”,dbText)Set CosFlds(0).Size = 10Set CosFlds(1) = CosTd.CreateField(“課程名”,dbText)Set CosFlds(1).Size = 20Set CosFlds
23、(2) = CosTd.CreateField(“授課學(xué)期”,dbInteger)Set CosFlds(3) = CosTd.CreateField(“學(xué)時(shí)數(shù)”,dbInteger)5、用用AppendAppend方法把每個(gè)字段添加到表中,并把每個(gè)表添加到數(shù)據(jù)庫(kù)中。例如方法把每個(gè)字段添加到表中,并把每個(gè)表添加到數(shù)據(jù)庫(kù)中。例如:CosTd.Fields.Append CosFlds(0)CosTd.Fields.Append CosFlds(1)CosTd.Fields.Append CosFlds(2)CosTd.Fields.Append CosFlds(3)MyDb.TableDefs.
24、Append CosTd 4.2 數(shù)據(jù)訪問(wèn)對(duì)象 DAO創(chuàng)建數(shù)據(jù)庫(kù)的步驟創(chuàng)建數(shù)據(jù)庫(kù)的步驟用數(shù)據(jù)庫(kù)表添加索引的步驟用數(shù)據(jù)庫(kù)表添加索引的步驟:1.1.用用TableDefTableDef對(duì)象中的對(duì)象中的CreateIndexCreateIndex方法給每個(gè)表創(chuàng)建索引,并設(shè)置其屬性方法給每個(gè)表創(chuàng)建索引,并設(shè)置其屬性: Set CosIdx = CosTd.CreateIndex(“課程號(hào)”) CosIdx.Primary = True是主碼 CosIdx.Unique = Ture值不重2.2.用用IndexIndex對(duì)象的對(duì)象的CreatefieldCreatefield方法給每個(gè)索引對(duì)象創(chuàng)建字段方
25、法給每個(gè)索引對(duì)象創(chuàng)建字段: Set NewFld = CosIdx.CreateField(“課程號(hào)”)3.3.把字段追加到把字段追加到IndexIndex中,然后把中,然后把IndexIndex追究到追究到TableDefTableDef對(duì)象中對(duì)象中: CosIdx.Fields.Append NewFld CosTd.Indexes.Append AuIdx 注意注意:用Index對(duì)象中的CreateField方法創(chuàng)建的字段不添加到TableDef中,而是添加到Index對(duì)象中,并給Name屬性賦值,該屬性與被索引的TableDef字段中的Name屬性相同。不用指定Index對(duì)象中字段的T
26、ype(類(lèi)型)和Size(大小)屬性。10.4.3 添加索引建好數(shù)據(jù)庫(kù)之后,還要指定索引建好數(shù)據(jù)庫(kù)之后,還要指定索引及各表間的關(guān)系:用及各表間的關(guān)系:用CreatIndex方法可以給方法可以給TableDef定義的表添定義的表添加索引,用加索引,用Index對(duì)象的對(duì)象的CreatField方法創(chuàng)建新的方法創(chuàng)建新的Field指指定被索引的字段定被索引的字段 4.4 添加關(guān)系和引用完整性Jet數(shù)據(jù)庫(kù)引擎提供了Relation對(duì)象來(lái)強(qiáng)制引用的完整性,以防止出現(xiàn)不一致的記錄。給數(shù)據(jù)庫(kù)添加關(guān)系的步驟:1.1.用用DatabaseDatabase對(duì)象的對(duì)象的CreateRelationCreateRela
27、tion方法創(chuàng)建方法創(chuàng)建RelationRelation對(duì)象,然后設(shè)置其對(duì)象,然后設(shè)置其tabletable和和ForeignTableForeignTable屬性:屬性:Dim Stu_XK As RelationSet Stu_XK = MyDb.CreateRelation(“Student_XK”)Stu_XK.Table = “學(xué)生”Stu_XK.ForeignTable = “修課”2.2.用用RelationRelation對(duì)象中的對(duì)象中的CreateFieldCreateField方法,創(chuàng)建一個(gè)字段,用來(lái)定義關(guān)系中的主碼和方法,創(chuàng)建一個(gè)字段,用來(lái)定義關(guān)系中的主碼和外碼字段。外碼
28、字段。Dim TempField As FieldSet TempField = Stu_XK.CreateField(“學(xué)號(hào)”)TempField.ForeignName = “學(xué)號(hào)”3.3.用用AppendAppend方法把方法把FieldField對(duì)象添加到對(duì)象添加到RelationRelation中,然后把中,然后把RelationRelation添加到添加到DatabaseDatabase中。中。Stu_XK.Fields.Append TempFieldMyDb.Relations.Append Stu_XK在添加和刪除記錄時(shí)必須保持引用的完整性以確保數(shù)據(jù)庫(kù)中的關(guān)系有用 5 創(chuàng)建數(shù)
29、據(jù)庫(kù)應(yīng)用程序 5.1 數(shù)據(jù)控件(數(shù)據(jù)控件(Data Control)數(shù)據(jù)控件是連接數(shù)據(jù)庫(kù)中的信息和用戶(hù)用來(lái)顯示信息的依附控件依附控件,是簡(jiǎn)單數(shù)據(jù)庫(kù)應(yīng)用程序的核心。依附控件是為處理創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序的數(shù)據(jù)控件而建立的控件。數(shù)據(jù)控件用于綁定數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)中的某個(gè)表,依附控件用于綁定表中的某個(gè)列。數(shù)據(jù)控件是VB工具箱中的一個(gè)可用控件,設(shè)置數(shù)據(jù)控件的步驟:設(shè)置數(shù)據(jù)控件的步驟:打開(kāi)VB選擇Data控件在窗體中畫(huà)出Data控件設(shè)定Data控件的DatabaseName和RecordSource屬性。用于綁定某個(gè)數(shù)據(jù)庫(kù)用于綁定數(shù)據(jù)庫(kù)中的某個(gè)表文本框、標(biāo)簽、校驗(yàn)框、圖片框、圖像等 5 創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序 5.
30、2 創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序 例:創(chuàng)建一個(gè)課程表應(yīng)用程序:例:創(chuàng)建一個(gè)課程表應(yīng)用程序:1、建立窗體:、建立窗體:打開(kāi)打開(kāi)VB 添加Data控件設(shè)置控件的屬性添加依附控件設(shè)置依附控件屬性。 Name:Course Name:Course Caption: Caption:課程課程DatabaseName: JXGL.mdbDatabaseName: JXGL.mdbRecordSourceRecordSource: :課程課程文本框名綁定字段對(duì)應(yīng)標(biāo)簽的標(biāo)題Text1課程號(hào)課程號(hào):Text2課程名課程名:Text3授課學(xué)期授課學(xué)期:Text4學(xué)時(shí)數(shù)學(xué)時(shí)數(shù):數(shù)據(jù)訪問(wèn)窗體設(shè)置的數(shù)據(jù)訪問(wèn)窗體設(shè)置的DataFieldDataField和和CaptionCaptionVBVB設(shè)置屏幕設(shè)置屏幕 2. 2.瀏覽數(shù)據(jù)庫(kù)中數(shù)據(jù):瀏覽數(shù)據(jù)庫(kù)中數(shù)據(jù):?jiǎn)螕暨\(yùn)行按鈕,結(jié)果如下結(jié)果如下: 5 創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序 5.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省淮南市潘集區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題(含答案)
- 清朝領(lǐng)導(dǎo)考試試題及答案
- 市場(chǎng)經(jīng)濟(jì)學(xué)試題及答案
- 管理沙盤(pán)面試題及答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)與服務(wù)提升訓(xùn)練試卷A卷附答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)題庫(kù)附答案(典型題)
- 煙草公司2025招聘考試全真模擬筆試試題(綜合能力測(cè)試卷)和答案解析
- 鼻飼操作及胃管誤入氣道案例分析培訓(xùn)課件
- 房產(chǎn)稅務(wù)知識(shí)培訓(xùn)課件
- 鉆石專(zhuān)業(yè)知識(shí)培訓(xùn)課件
- 抵押個(gè)人汽車(chē)借款合同范本
- 2025年中考第一次模擬考試地理(青海卷)(全解全析)
- 統(tǒng)編版(2024)七年級(jí)下冊(cè)語(yǔ)文期末復(fù)習(xí):第一單元素養(yǎng)提升測(cè)試卷(含答案)
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 股權(quán)轉(zhuǎn)讓委托書(shū)(6篇)
- 韓國(guó)出入境卡中韓文對(duì)照模板
- 五輥研磨機(jī)(課堂PPT)
- 二次函數(shù)求最值(動(dòng)軸定區(qū)間、動(dòng)區(qū)間定軸)(課堂PPT)
- 髖關(guān)節(jié)脫位2教學(xué)課件
- 耳式支座計(jì)算
- IMS基本信令流程課件
評(píng)論
0/150
提交評(píng)論