數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書_第4頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中 國(guó) 礦 業(yè) 大 學(xué)數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書(工業(yè)工程專業(yè)試用)礦業(yè)工程學(xué)院工業(yè)工程系目 錄實(shí)驗(yàn)一 ACCESS數(shù)據(jù)庫(kù)的創(chuàng)建和操縱1實(shí)驗(yàn)二 熟悉SQL Server 2000系統(tǒng)環(huán)境及基本操作4實(shí)驗(yàn)三 數(shù)據(jù)庫(kù)訪問程序的編制8附件1 ACCESS軟件內(nèi)容介紹9附件2 ADO數(shù)據(jù)訪問原理17附件3數(shù)據(jù)庫(kù)應(yīng)用程序示例21附件4 實(shí)驗(yàn)報(bào)告封面格式33實(shí)驗(yàn)一 ACCESS數(shù)據(jù)庫(kù)的創(chuàng)建和操縱1實(shí)驗(yàn)?zāi)康模?)了解具體DBMS的功能和作用。(2)掌握ACCESS數(shù)據(jù)庫(kù)管理系統(tǒng)的基本操作。(3)掌握用ACCESS設(shè)計(jì)數(shù)據(jù)庫(kù)的過程和步驟。2實(shí)驗(yàn)任務(wù)(1)研究ACCESS的羅斯文(Northwind)示例數(shù)據(jù)庫(kù)

2、及其結(jié)構(gòu)。如果安裝在C盤,則打開路徑為:C:Program filesMicrosoft officeOffice11samples(2)完成簡(jiǎn)化的學(xué)籍系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)。創(chuàng)建學(xué)生信息表、課程表、教師信息表、開課表、成績(jī)表。要求:屬性名用相應(yīng)字拼音第一字母(如表中所示),為了方便記憶,在標(biāo)題部分標(biāo)注中文意思;確定并創(chuàng)建各個(gè)表的主鍵;確定并設(shè)定各個(gè)表中屬性的約束條件;確定并創(chuàng)建表之間的關(guān)聯(lián)。各表結(jié)構(gòu)如下:(數(shù)據(jù)庫(kù)名稱統(tǒng)一為:xueji)表格 1 學(xué)生信息表(表名Student)學(xué)號(hào)姓名年齡民族政治面貌所在學(xué)院所在系入學(xué)日期籍貫家庭所在地XHXMNLMZZZMMSZXYSZXRXRQJGJTSZD表

3、格 2 教師信息表(表名Teacher)職工號(hào)姓名出生日期民族政治面貌職稱最高學(xué)歷所在學(xué)院所在系參加工作日期籍貫ZGHXMCSRQMZZZMMZCZGXLSZXYSZXGZRQJG表格 3 課程表(表名Course)課程編號(hào)課程名教材教材出版社先修課編號(hào)KCBHKCMJCJCCBSXXKBH表格 4 開課表(表名TC)課程編號(hào)職工號(hào)課程說明KCBHZGHKCSM表格 5 成績(jī)表(表名SC)課程編號(hào)學(xué)號(hào)成績(jī)KCBHXHCJ(3)向創(chuàng)建的表中添加某些實(shí)例記錄能夠完成以下相應(yīng)的查詢要求。(4)用SQL語(yǔ)句創(chuàng)建基于上述表格的下列查詢(Query)。注:上機(jī)前完成以下SQL語(yǔ)句的編寫,上機(jī)時(shí)進(jìn)行調(diào)試。在

4、書寫SQL語(yǔ)句時(shí)注意相應(yīng)屬性的數(shù)據(jù)類型,字符常量用英文單引起括起來。認(rèn)真體會(huì)每個(gè)查詢,注意保存結(jié)果,以便編制實(shí)驗(yàn)報(bào)告。² 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名;² 查詢?nèi)w學(xué)生的基本情況;² 查詢?nèi)w學(xué)生的姓名及其出生年份;² 查詢選修過課程的學(xué)生的學(xué)號(hào);² 查詢計(jì)算機(jī)系全體學(xué)生的名單;² 查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào);² 查詢年齡在19至21歲之間的學(xué)生姓名、系別和年齡;² 查詢年齡不在20至23歲之間的學(xué)生姓名、系別和年齡;² 查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓名和性別;² 查詢不是信息系、數(shù)學(xué)系

5、和計(jì)算機(jī)系學(xué)生的姓名和性別;² 查詢所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別;² 查詢“歐陽(yáng)”且全名為3個(gè)漢字的學(xué)生的姓名;² 查詢名字中第二個(gè)字為“忠”字的學(xué)生姓名和學(xué)號(hào);² 查詢不姓劉的學(xué)生姓名;² 查詢所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào);² 查詢計(jì)算機(jī)系年齡在19歲以下的學(xué)生姓名;² 查詢?nèi)w學(xué)生情況,要求查詢結(jié)果按所在系升序排列,對(duì)同一系中的學(xué)生按年齡降序排列;² 查詢學(xué)生總?cè)藬?shù);² 查詢選修了課程的學(xué)生人數(shù);² 查詢學(xué)習(xí)“數(shù)據(jù)庫(kù)”課程的學(xué)生最高分?jǐn)?shù);² 查詢各個(gè)課程號(hào)與相應(yīng)的選課人數(shù);&#

6、178; 查詢每個(gè)學(xué)生及其選修課程的情況;² 查詢每一門課的間接先修課(即先修課的先修課)² 查詢選修了“數(shù)據(jù)庫(kù)”課程且成績(jī)?cè)?0分以上的所有學(xué)生;² 查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生姓名及所在系² 查詢選修了課程名為“管理信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名;² 查詢其他系中比工業(yè)工程系任一學(xué)生年齡小的學(xué)生名單;² 查詢所有未選修“可靠性”課程的學(xué)生姓名;² 查詢計(jì)算機(jī)系的學(xué)生與年齡不大于19歲的學(xué)生的交集。(5)按要求編制實(shí)驗(yàn)報(bào)告報(bào)告要求:Ø 對(duì)任務(wù)(2)中設(shè)計(jì)的各個(gè)表注明其各個(gè)屬性的約束;用關(guān)系圖表示出各個(gè)表的關(guān)聯(lián),

7、并加以說明;Ø 對(duì)任務(wù)(3)在報(bào)告中列出添加相應(yīng)實(shí)例的各個(gè)表,要求每個(gè)表中的元組數(shù)目不能低于8行,但也不超過15個(gè);Ø 對(duì)任務(wù)(4)在報(bào)告中寫出SQL查詢語(yǔ)句。Ø 實(shí)驗(yàn)報(bào)告封面格式見附件4所示。建議:有條件的同學(xué)可以試著在SQL Server中完成相應(yīng)的操作。實(shí)驗(yàn)二 熟悉SQLServer2000系統(tǒng)環(huán)境及基本操作1實(shí)驗(yàn)?zāi)康模?)掌握SQL Server 2000企業(yè)管理器,創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)、基本表、視圖、約束和索引的創(chuàng)建、修改和刪除操作。(2)掌握數(shù)據(jù)庫(kù)的備份/還原和分離/附加操作。(3)掌握身份驗(yàn)證模式的修改,登錄帳號(hào)與角色的創(chuàng)建。(4)學(xué)會(huì)使用查詢分析器進(jìn)行

8、調(diào)試。(5)掌握游標(biāo)、存儲(chǔ)過程、觸發(fā)器的使用。2實(shí)驗(yàn)任務(wù)(1)熟悉SQL Server 2000中企業(yè)管理器的使用環(huán)境;(2)練習(xí)啟動(dòng)/關(guān)閉數(shù)據(jù)庫(kù)服務(wù)的三種方式(見教材P111);(3)熟悉SQL Server 2000的安裝目錄(見教材P113P117);(4)觀察SQL Server系統(tǒng)數(shù)據(jù)庫(kù)和系統(tǒng)表;(5)察看當(dāng)前系統(tǒng)的身份驗(yàn)證模式; 步驟:在企業(yè)管理器中左邊樹形圖中,展開到服務(wù)器結(jié)點(diǎn),選擇服務(wù)器,然后單擊鼠標(biāo)右鍵,選擇“屬性”,再選擇“安全性”選項(xiàng)卡。(6)創(chuàng)建實(shí)驗(yàn)一中的學(xué)籍系統(tǒng)數(shù)據(jù)庫(kù),并把相應(yīng)的數(shù)據(jù)/事務(wù)日志文件保存到“D:TSQL教學(xué)DATA”目錄下,數(shù)據(jù)庫(kù)名稱為xueji。如目錄

9、不存在請(qǐng)自建。(7)練習(xí)創(chuàng)建五類約束,并輸入數(shù)據(jù)體會(huì)約束的作用;(見教材P127P130)(8)練習(xí)創(chuàng)建索引的方法,對(duì)表及表中屬性列進(jìn)行修改、刪除操作(9)用實(shí)驗(yàn)一中的部分查詢創(chuàng)建相應(yīng)的視圖,要求創(chuàng)建12個(gè);(10) 體會(huì)數(shù)據(jù)庫(kù)的備份/還原與分離/附加操作;(11)請(qǐng)?bào)w會(huì)如下T-SQL程序(在查詢分析器中進(jìn)行實(shí)驗(yàn))向數(shù)據(jù)庫(kù)中添加兩個(gè)日志文件USE xuejiGO ALTER DATABASE xuejiADD LOG FILE ( NAME = test1log2, FILENAME = 'd:TSQL教學(xué)datatest2log.ldf', SIZE = 5MB, MAXSI

10、ZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1log3, FILENAME = 'd:TSQL教學(xué)datatest3log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)向數(shù)據(jù)庫(kù)中添加由兩個(gè)文件組成的文件組Use xuejiALTER DATABASE xuejiADD FILEGROUP Test1FG1 命名文件組GO ALTER DATABASE xuejiADD FILE ( NAME = test1dat3, FILENAME = 'd:TSQL教學(xué)datat

11、1dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1dat4, FILENAME = 'd:TSQL教學(xué)datat1dat4.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TO FILEGROUP Test1FG1 從數(shù)據(jù)庫(kù)中刪除文件USE xuejiGO ALTER DATABASE Test1 REMOVE FILE test1dat4 GO 創(chuàng)建工作表(jobs)Use xuejiCREATE TABLE jo

12、bs ( job_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, job_desc varchar(50) NOT NULL DEFAULT 'New Position - title not formalized yet', min_lvl tinyint NOT NULL CHECK (min_lvl >= 10), max_lvl tinyint NOT NULL CHECK (max_lvl <= 250) ) 注:請(qǐng)使用插入語(yǔ)句進(jìn)行約束試驗(yàn)。清空表操作Use xuejiDelete jobs刪除表操作Use

13、 xuejiDrop jobs(12) 根據(jù)任務(wù)(6)創(chuàng)建的數(shù)據(jù)庫(kù)完成以下各小題的測(cè)試,調(diào)試下面存儲(chǔ)過程,寫出每一步意思。USE xuejiIF EXISTS(SELECT * FROM SYSOBJECTS WHERE TYPE='P'AND NAME='TEST1')DROP PROC TEST1GOCREATE PROCEDURE test1 test_cursor CURSOR VARYING OUTPUTASSET test_cursor=CURSOR SCROLL STATICFOR SELECT XH,XM FROM studentOPEN tes

14、t_cursorGO DECLARE tt cursor,sno varchar(6),sname varchar(10)EXEC TEST1 test_cursor=tt OUTPUTWHILE FETCH_STATUS=0 BEGIN FETCH tt INTO sno,snameprint 'The result is'+sno+' '+sname END fetch last from tt into sno,snameCLOSE TTDEALLOCATE TTGO按要求創(chuàng)建存儲(chǔ)過程,并調(diào)試 創(chuàng)建一個(gè)存儲(chǔ)過程,計(jì)算student表中每一個(gè)學(xué)生的出生日期,

15、并顯示出來。調(diào)試下列觸發(fā)器,寫出每一步的意思ALTER TABLE studentADD birth_year INT GOIF EXISTS(SELECT * FROM sysobjects WHERE name='tr_stu_birth' AND type='tr')DROP TRIGGER tr_stu_birthGOCREATE TRIGGER tr_stu_birth ON studentFOR INSERTAS DECLARE sno varchar(6),age int,birthyear int SELECT sno=xh FROM INSER

16、TED SELECT age=nl FROM student WHERE sno=xh IF isnull(age,0)<>0 BEGINSELECT birthyear=year(getdate()-ageUPDATE studentSET birth_year=birthyearWHERE xh=sno ENDGO按要求創(chuàng)建觸發(fā)器,并調(diào)試。 創(chuàng)建一個(gè)觸發(fā)器,當(dāng)刪除student表中的記錄中,自動(dòng)刪除SC表中該學(xué)生相應(yīng)的記錄。(13)完成第7章第7第10題。(14)按要求編制實(shí)驗(yàn)報(bào)告。 報(bào)告包括任務(wù)(9)、(12)、(13)的內(nèi)容。其它不要求。實(shí)驗(yàn)報(bào)告封面格式見附件4所示。實(shí)驗(yàn)三

17、 數(shù)據(jù)庫(kù)訪問程序的編制1實(shí)驗(yàn)?zāi)康恼莆諗?shù)據(jù)庫(kù)設(shè)計(jì)過程及數(shù)據(jù)庫(kù)應(yīng)用軟件的基本開發(fā)模式。2實(shí)驗(yàn)任務(wù)根據(jù)實(shí)驗(yàn)?zāi)康?,結(jié)合專業(yè)課程或某方面需求自擬一個(gè)題目,開發(fā)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序。3、要求Ø 界面合理,方便用戶使用Ø 數(shù)據(jù)庫(kù)設(shè)計(jì)合理Ø 能夠進(jìn)行多種條件的查詢,包括各種組合查詢。Ø 能夠方便地增添數(shù)據(jù)及刪除數(shù)據(jù),并正確更新到數(shù)據(jù)庫(kù)中。Ø 能夠方便地進(jìn)行有關(guān)數(shù)據(jù)的修改。Ø 提供多種方式的瀏覽數(shù)據(jù)功能。Ø 按格式編制實(shí)驗(yàn)報(bào)告。 實(shí)驗(yàn)報(bào)告封面格式見附件4所示。學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)訪問程序示例見附件3。附件1 ACCESS軟件內(nèi)容介紹(1)數(shù)據(jù)庫(kù)創(chuàng)

18、建方法兩種:通過向?qū)?chuàng)建或使用空白數(shù)據(jù)庫(kù)來人工創(chuàng)建。(強(qiáng)調(diào)一庫(kù)多表)。(2)數(shù)據(jù)表的創(chuàng)建方法三種;設(shè)計(jì)器,向?qū)В斎霐?shù)據(jù);(重點(diǎn)介紹通過設(shè)計(jì)器來創(chuàng)建表)(3)使用表設(shè)計(jì)器Access中字段的命名方法與其他數(shù)據(jù)庫(kù)系統(tǒng)中的字段命名方法基本相同,所不同的是,在Access中允許字段名包含空格和標(biāo)點(diǎn)符號(hào)。字段命名的規(guī)則如下:Ø 字段名所包含的字符數(shù)不得超過64個(gè)字符,包括空格在內(nèi),這些“字符是指單字節(jié)的字符,如果使用漢字來命名字段名,字符數(shù)需要減半;Ø 字段名可以由字母、數(shù)字、標(biāo)點(diǎn)符號(hào)等組成,可以使用漢字;Ø 字段名中不能含有西文中的句號(hào)(.)、感嘆號(hào)(?。┘胺嚼ㄌ?hào)()。

19、Ø 不能使用空格作為字段的第一個(gè)字符。在Access中可以使用的9種數(shù)據(jù)類型數(shù)據(jù)類型可存放的數(shù)據(jù)字節(jié)數(shù)文本字母、數(shù)字、字符、漢字0255備注字母、數(shù)字、字符、漢字065535數(shù)字?jǐn)?shù)值1、2、4或8字節(jié)日期/時(shí)間日期/或時(shí)間8貨幣貨幣數(shù)據(jù)8自動(dòng)編號(hào)數(shù)值4是/否邏輯值1OLE對(duì)象圖片、聲音等超鏈接圖片、聲音、文檔等文本型字段字符串格式化字符格式化字符作用在該位置可以顯示任意可用的字符&在該位置可以顯示任意可用的字符,如果沒有可用的字符要顯示,Access將不顯示任何內(nèi)容<以小寫字母顯示>以大寫字母顯示+, -, $, (, )在字符串中直接顯示這些字符“要顯示的文本”

20、顯示用雙引號(hào)括起來的任何文本顯示該字符后面所跟的那個(gè)字符!左對(duì)齊*使用*號(hào)后面所跟字符來進(jìn)行填充顏色設(shè)置所顯示字符串的顏色文本類型字段的屬性說明:Ø 字段大?。涸O(shè)置該字段所占用的字節(jié)數(shù),決定今后在該字段中所能輸入的最多字符數(shù),最大值為255。Ø 格式:設(shè)置該字段字符串的顯示格式。用上表中的格式化字符串的格式化字符。Ø 輸入掩碼:Ø 標(biāo)題:在用Access來創(chuàng)建的窗體中該標(biāo)題來標(biāo)識(shí)該字段。 Ø 默認(rèn)值:當(dāng)增加新記錄時(shí),該字段所使用的預(yù)設(shè)值。Ø 有效性規(guī)則:設(shè)置限定該字段所能接受的輸入值。當(dāng)輸入的數(shù)據(jù)違反有效性規(guī)則的設(shè)置時(shí),將顯示有效性文

21、本中的提示信息。Ø 有效性文本:當(dāng)輸入值不符合有效性規(guī)則時(shí)所顯示的信息。Ø 必填字段:Ø 允許空字符串:Ø 索引:三種情況。(加快搜索與排序)Ø Unicode壓縮:指定是否對(duì)該字段的文字進(jìn)行Unicode壓縮,壓縮可以減少存儲(chǔ)空間。Ø 輸入法模式:設(shè)置當(dāng)焦點(diǎn)移動(dòng)到該字段時(shí)是否打開輸入法。備注型字段(同上)數(shù)字型字段Ø 默認(rèn)值:當(dāng)增加新記錄時(shí),該字段所使用的預(yù)設(shè)值。該值可以通過使用表達(dá)式生成器來生成,“表達(dá)式生成器”對(duì)話框如下圖所示。在對(duì)話框中選擇要使用的項(xiàng)目,然后單擊“粘貼”按鈕即可將其粘貼到表達(dá)式中。日期/時(shí)間型字段&#

22、216; 格式:設(shè)置字段的顯示格式。可以是一般日期、長(zhǎng)日期、中日期、短日期、長(zhǎng)時(shí)間、中時(shí)間、短時(shí)間等。另外,在Access中允許用戶自定義日期/時(shí)間型字段的格式。自定義格式可由兩部分組成,它們之間用分號(hào)分隔,第一部分用來說明日期、時(shí)間的格式:第二部分用來說明當(dāng)日期/時(shí)間型字段為空(Null)時(shí)的顯示格式。有關(guān)日期/時(shí)間型字段的格式客符如下表。日期/時(shí)間型格式字符格式字符作用:設(shè)置小時(shí)、分、秒之間分隔符的位置/設(shè)置年、月、日之間分隔符的位置c按照一般日期格式顯示aaa顯示中文星期幾d當(dāng)日期是一位數(shù)時(shí)將日期顯示成一位數(shù)dd當(dāng)日期是一位數(shù)時(shí)將日期顯示成兩位數(shù),例如2日顯示成02日ddd顯示星期的英文

23、縮寫dddd顯示星期的完整英文名稱ddddd按照短日期格式顯示dddddd按照長(zhǎng)日期格式顯示w用數(shù)字來顯示星期幾ww顯示是一年中的第幾個(gè)星期m當(dāng)月份是一位數(shù)時(shí)將月份顯示成一位數(shù)mm當(dāng)月份是一位數(shù)時(shí)將月份顯示成兩位數(shù)mmm顯示月份的英文縮寫mmmm顯示月份的完整英文名稱g顯示季節(jié)Y顯示是一年中的第幾天YY用兩位數(shù)顯示年份YYYY用4位數(shù)顯示的份h當(dāng)小時(shí)是一位數(shù)時(shí)將小時(shí)顯示成一位數(shù)hh當(dāng)小時(shí)是一位數(shù)時(shí)將小時(shí)顯示成兩位數(shù)n當(dāng)分鐘是一位數(shù)時(shí)將分鐘顯示成一位數(shù)nn當(dāng)分鐘是一位數(shù)時(shí)將分鐘顯示成兩位數(shù)s當(dāng)鈔種是一位數(shù)時(shí)將分鐘顯示成一位數(shù)ss當(dāng)鈔釧是一位數(shù)時(shí)將分鐘顯示成兩位數(shù)tttt按照長(zhǎng)時(shí)間格式顯示AM/P

24、M用適當(dāng)?shù)腁M/PM顯示12小時(shí)制時(shí)鐘am/pm用適當(dāng)?shù)腶m/pm顯示12小時(shí)制時(shí)鐘A/P用適當(dāng)?shù)腁/P顯示12小時(shí)制時(shí)鐘a/p用適當(dāng)?shù)腶/p顯示12小時(shí)制時(shí)鐘AMPM按照WINDOWS中所設(shè)置的格式顯示-+$這些字符可以直接用于顯示“要顯示的文字”顯示雙引號(hào)間的文本顯示跟隨其后的那個(gè)字符!左對(duì)齊*用跟隨其后的那個(gè)字符作為填充字符顏色用于設(shè)置顯示的顏色貨幣型字段Ø 同上自動(dòng)編號(hào)字段自動(dòng)編號(hào)字段是一種較為特殊的數(shù)據(jù)類型,當(dāng)您每次向表中添加記錄時(shí),Access會(huì)自動(dòng)為該字段添加一個(gè)編號(hào)。使用這種類型的字段可以保證在表中編號(hào)的唯一性。當(dāng)刪除一條記錄時(shí),該字段并不重新編號(hào),并且不再使用已被刪

25、除的編號(hào)。Ø 新值:設(shè)置新增加記錄時(shí)編號(hào)是遞增方式,還是遞減方式。是/否型字段是/否型字段存放邏輯值。Ø 格式:在Access中邏輯型字段可以有多種顯示格式,如是/否、真/假、開/關(guān)等。OLE對(duì)象型字段OLE對(duì)象型字段存放其他Windows對(duì)象,為了使用用戶能夠?yàn)g覽和編輯該對(duì)象,該對(duì)象必須是由支持OLE的Windows應(yīng)用程序所創(chuàng)建的,并且在以后使用數(shù)據(jù)庫(kù)時(shí),該應(yīng)用程序被安裝到Windows系統(tǒng)中。Access支持OLE對(duì)象的“鏈接”與“嵌入”。當(dāng)您選用鏈接方式時(shí),OLE對(duì)象的數(shù)據(jù)仍舊保存在原來的文件中,這時(shí)如果原文件被修改,則鏈接OLE對(duì)象的內(nèi)容也將被修改。當(dāng)您選用嵌入方

26、式時(shí),OLE對(duì)象的數(shù)據(jù)被插入到數(shù)據(jù)庫(kù)文件中,這時(shí)如果原文件被修改,嵌入的OLE對(duì)象的內(nèi)容并不會(huì)發(fā)生變化。使用嵌入方式時(shí),由于OLE對(duì)象的數(shù)據(jù)要插入到數(shù)據(jù)庫(kù)中,可能使數(shù)據(jù)庫(kù)文件變得很大。超鏈接型字段超鏈接型字段用來存放通過超鏈接方式鏈接的Windows對(duì)象。設(shè)置輸入掩碼輸入掩碼用于輸入格式化的數(shù)據(jù)。除備注、OLE對(duì)象、自動(dòng)編號(hào)、邏輯等4種數(shù)據(jù)類型之外,都可以使用輸入掩碼來格式化輸入數(shù)據(jù)。輸入掩碼有3部分組成,各部分用分號(hào)分隔。第一部分用來定義數(shù)據(jù)的格式,格式字符串如下表所示。第二部分設(shè)置數(shù)據(jù)的存放方式,如果等于0,則按顯示的格式進(jìn)行存放,如果等于1,則只存放數(shù)據(jù)。第三部分定義一個(gè)用來標(biāo)明輸入位置

27、的符號(hào),缺省時(shí)使用下劃線。如:“TEL:”(999)00000000;0;_輸入掩碼格式字符格式字符作用0必須在該位置輸入數(shù)字L必須在該位置輸入字母A必須在該位置輸入字母或數(shù)字&必須在該位置輸入字符或空格9只允許輸入數(shù)字及空格,如果用戶移動(dòng)光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲(chǔ)存任何內(nèi)容#只允許輸入數(shù)字、“+”或“-”符號(hào)以及空格,如果用戶移動(dòng)光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將默認(rèn)為空格?只允許輸入字母,如果用戶移動(dòng)光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲(chǔ)存任何內(nèi)容a只允許輸入字母或數(shù)字,如果用戶移動(dòng)光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲(chǔ)存

28、任何內(nèi)容C只允許輸入字母或空格,如果用戶移動(dòng)光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲(chǔ)存任何內(nèi)容!字符從右向左填充<轉(zhuǎn)換成小寫字母>轉(zhuǎn)換成大寫字母.小數(shù)點(diǎn)位置,數(shù)字千位分隔符;、/日期時(shí)間分隔符顯示后面所跟隨的那個(gè)字符“文本”顯示雙引號(hào)括起來的文本設(shè)置主關(guān)鍵字在每個(gè)Access表中都可以指定一個(gè)主關(guān)鍵字,主關(guān)鍵字可以包含一個(gè)或多個(gè)字段,以保證每條記錄都具有唯一的值。如何選取多個(gè)字段?在單擊字段選擇按鈕的同時(shí)按住“CTRL”鍵可以同時(shí)選擇多個(gè)字段。(4)獲取外部數(shù)據(jù)源在Access中除了可以直接輸入數(shù)據(jù)外還可以從其他文件中獲取數(shù)據(jù),這樣可以免去重復(fù)錄入數(shù)據(jù)的麻煩。方式有以下兩

29、種:(1) 導(dǎo)入表:(2) 鏈接表(5)建立表之間的關(guān)系當(dāng)在數(shù)據(jù)庫(kù)定義了兩個(gè)以上的表時(shí),就需要通過表間的關(guān)系來將不同的表連接起來,使各表能同步工作。要在兩個(gè)表間建立關(guān)系,必須在這兩個(gè)表中擁有相同數(shù)據(jù)類型的字段。例如我們可以通過字段“身份證號(hào)碼”來建立“職工基本情況”表和“職工工資情況”表之間的關(guān)系,其操作方法如下: 打開表所在的數(shù)據(jù)庫(kù)窗口。 單擊工具欄中的“關(guān)系”按鈕,如果是第一次建立表之間的關(guān)系,則出現(xiàn)“顯示表”對(duì)話框,如下圖: 選擇要建立關(guān)系的表,然后單擊“添加”按鈕,逐個(gè)添加要建立關(guān)系的表。過盛所有要建立關(guān)系的表的添加后,單擊“關(guān)閉”按鈕,關(guān)閉“顯示表”對(duì)話框。 如下圖所示“關(guān)系”對(duì)話框

30、中選擇“職工基本情況表”中的“身份證號(hào)碼”字段。 按下鼠標(biāo)器左鍵,將其拖動(dòng)到“職工工資表”中的“身份證號(hào)碼”字段上,如下圖所示。釋放鼠標(biāo)鍵后出現(xiàn)“編輯關(guān)系”對(duì)話框,如下圖: 如果要在更新主表中主關(guān)鍵字字段的內(nèi)容時(shí),同步更新關(guān)系表中相關(guān)字段的內(nèi)容,請(qǐng)?jiān)凇熬庉嬯P(guān)系”對(duì)話框中先選取“實(shí)話參照完整性”前面的復(fù)選框,再選取“級(jí)聯(lián)更新相關(guān)字段”前面的復(fù)選框。 如果要在刪除主表中記錄的同時(shí)刪除關(guān)系表中的相關(guān)記錄,請(qǐng)?jiān)凇熬庉嬯P(guān)系”對(duì)話框中選取“實(shí)施參照完整性”前面的復(fù)選框,再選取“級(jí)聯(lián)刪除相關(guān)記錄”前面的復(fù)選框。需要注意的是,必須在所有關(guān)系表中都選擇了該項(xiàng),該項(xiàng)才有效,否則該項(xiàng)無效。 要設(shè)置表之間的聯(lián)接方式,

31、可以單擊“聯(lián)接類型”按鈕,出現(xiàn)“聯(lián)接屬性”對(duì)話框,如下圖,在該對(duì)話框中選擇聯(lián)接的方式。 單擊“關(guān)系”對(duì)話框中“創(chuàng)建”按鈕,創(chuàng)建表之間的關(guān)系,如下圖。從下圖中可以看到,在創(chuàng)建關(guān)系的表之間有一條線將其聯(lián)接起來,直觀地顯示出表之間的關(guān)系。 關(guān)閉“關(guān)系”對(duì)話框,這時(shí)Access會(huì)詢問您是否保存關(guān)系的設(shè)置,將設(shè)置的關(guān)系保存起來。附件2 ADO數(shù)據(jù)訪問原理第一部分 VB數(shù)據(jù)訪問技術(shù)概述一、VB數(shù)據(jù)訪問技術(shù)的發(fā)展經(jīng)歷以下三個(gè)階段:1、DAO(Data Access Object)與Microsoft Jet2、RDO(Remote Data Object)與ODBC數(shù)據(jù)驅(qū)動(dòng)接口3、ADO(ActiveX D

32、ata Object)與OLE DBMicrosoft 推出的UDA(Universal Data Access,一致數(shù)據(jù)訪問技術(shù))包括兩層軟件接口: ADO 應(yīng)用層的編程接口; OLE DB系統(tǒng)級(jí)的編程接口。二、ADO數(shù)據(jù)訪問對(duì)象模型主要包括:三個(gè)主體對(duì)象:Connection;Command;Recordset。四個(gè)集合對(duì)象:Errors Error Properties Property Parameters Parameter Fields Field典型的ADO應(yīng)用使用Connection對(duì)象建立與數(shù)據(jù)源的連接,然后用一個(gè)Command對(duì)象給出對(duì)數(shù)據(jù)庫(kù)操作的命令,而Recordset

33、用于對(duì)結(jié)果數(shù)據(jù)進(jìn)行維護(hù)或者瀏覽等操作。第二部分ADO對(duì)象一、Connection對(duì)象步驟:1、引用ADO對(duì)象庫(kù);打開“工程”菜單“引用”進(jìn)入引用對(duì)話框;選擇“Microsoft ActiveX Data Objects 2.0 Library”2、創(chuàng)建Connection對(duì)象 Public cnnStu As New ADODB.Connection3、為Connection對(duì)象指定其連接的數(shù)據(jù)源類型 Object.Provider = “數(shù)據(jù)源提供者名稱” 如:CnnStu.Provider=“Microsoft.Jet.OLEDB.4.0”4、指定具體數(shù)據(jù)源并打開 Object.Open

34、文件路徑及文件名如:CnnStu.Open App.Path & “studata.mdb”Connection對(duì)象中其他主要屬性和方法:屬性:CursorLocation設(shè)置或返回游標(biāo)位置。(adUserClient)State查看當(dāng)前對(duì)象的狀態(tài);ConnectionString用于建立到數(shù)據(jù)源的連接信息。CommandTimeout終止嘗試和產(chǎn)生錯(cuò)誤之前執(zhí)行命令期間需等待的時(shí)間。ConnectionTimeout在終上嘗試和產(chǎn)生錯(cuò)誤之前建立連接所等待的時(shí)間。方法:Close關(guān)閉當(dāng)前對(duì)象;BeginTrans 啟動(dòng)新事務(wù);CommitTrans保存所有更改并結(jié)束當(dāng)事務(wù);Rollbac

35、kTrans 取消當(dāng)前事務(wù)中所做的任何更改并結(jié)束事務(wù)。應(yīng)用語(yǔ)法:Object.BeginTrans Object.CommitTrans Object.RollbackTranslevel=Object.BeginTrans() 用于得到事務(wù)嵌套層次Execute執(zhí)行指定的查詢、SQL語(yǔ)句等內(nèi)容。應(yīng)用語(yǔ)法:Object.Execute CommandText, RecordsAffectedOpen打開到數(shù)據(jù)庫(kù)的鏈接。應(yīng)用語(yǔ)法:Object.Open ConnectionString, UserID, PasswordCancel 取消已掛起的Execute或Open方法的調(diào)用二、Comman

36、d對(duì)象ConnectionCommandParameters屬性:ActiveConnection設(shè)置Command當(dāng)前所屬的Connection對(duì)象CommandText 包含要發(fā)送給數(shù)據(jù)提供者的文本。CommandType CommandText類型。State對(duì)象狀態(tài)屬性方法:Execute執(zhí)行在CommandText中指定的內(nèi)容。應(yīng)用語(yǔ)法:Set RecordsetObj=Object.ExecuteCancel 取消執(zhí)行被掛起的Execute方法的調(diào)用。應(yīng)用示例:Dim Cn As New ADODB.ConnectionDim Cmd As New ADODB.CommandIf

37、the ADOTestTable does not exitOn Error GoTo AdoErrorCn.Open “MySample”, ”Sa”Set Cmd.ActiveConnection=CnCmd.CommandType=adCmdTextCmd.CommandText=“drop table MyTestTable”Cmd.ExecuteCmd.CommandText=“create table MyTestTable(id int, Name char(100)”Cmd.ExecuteCmd.CommandText=“insert into MyTestTable valu

38、es(1, Pan Admin)”Cmd.ExecuteCn.closeExit subAdoError:handle error三、Recordset對(duì)象ConnectionRecordsetFields創(chuàng)建Recordset對(duì)象:Public rstStu AS NEW ADODB.Recordset Set rstStu.ActiveConnection=Cn主要屬性:ActiveConnection指定Recordset對(duì)象所屬的Connection對(duì)象BOF表示當(dāng)前記錄位于Recordset對(duì)象的第一個(gè)記錄之前。EOF表示當(dāng)前記錄位于Recordset對(duì)象的最后的一個(gè)記錄之后Curs

39、orLocation 設(shè)置或返回游標(biāo)位置。CursorType 表示在Recordset對(duì)象中使用的游標(biāo)類型。(動(dòng)態(tài)、鍵集、靜態(tài)、僅向前游標(biāo)四種)常量說明adOpenForwardOnly僅向前游標(biāo),默認(rèn)值。與靜態(tài)游標(biāo)相同,但只能在記錄中向前滾動(dòng)。當(dāng)需要在記錄集中單向移動(dòng)時(shí),可用于提高性能。adOpenKeyset鍵集游標(biāo)。盡管從您的記錄集不能訪問其他用戶刪除的記錄,但除無法查看其他用戶添加的記錄外,鍵集游標(biāo)與動(dòng)態(tài)游標(biāo)相似。仍然可以看見其他用戶更改的數(shù)據(jù)。adOpenDynamic動(dòng)態(tài)游標(biāo)??梢钥匆娖渌脩羲鞯奶砑印⒏暮蛣h除。允許在記錄集中進(jìn)行所有類型的移動(dòng),但不包括提供者不支持的書簽操作

40、。adOpenStatic靜態(tài)游標(biāo)??梢杂脕聿檎覕?shù)據(jù)或生成報(bào)告的記錄集合的靜態(tài)副本。另外,對(duì)其他用戶所作的添加、更改或刪除不可見。CacheSize設(shè)置或返回本地緩存中Recordset記錄數(shù)RecordCount 返回經(jīng)過查詢操作所得到的記錄集中記錄的數(shù)目State查看當(dāng)前對(duì)象的狀態(tài);LockType 常量說明adLockReadOnly默認(rèn)值,只讀。無法更改數(shù)據(jù)。adLockPessimistic保守式記錄鎖定(逐條)。提供者執(zhí)行必要的操作確保成功編輯記錄,通常采用編輯時(shí)立即鎖定數(shù)據(jù)源的記錄的方式。adLockOptimistic開放式記錄鎖定(逐條)。提供者使用開放式鎖定,只在調(diào)用方法時(shí)

41、鎖定記錄。adLockBatchOptimistic開放式批更新。用于與立即更新模式相反的批更新模式。主要方法:Open方法Object.Open Source, ActiveConnection,CursorType, LockType, Option應(yīng)用方法:rstStu.Open “Select * From Student”AddNew方法為可更新RecordSet對(duì)象創(chuàng)建新記錄。應(yīng)用方法: rstStu.AddNew rstStu.fields!Sno=ValueUpdate方法保存對(duì)Recordset對(duì)象當(dāng)前記錄所做的所有更改。應(yīng)用方法: rstStu .Update Close方

42、法rstStu.Close Requery方法通過重新執(zhí)行對(duì)象所基于的查詢,來更新Recordset對(duì)象中的數(shù)據(jù)。應(yīng)用方法:rstStu.RequeryMoveFirst, MoveLast, MoveNext, MovePrevious方法分別移動(dòng)對(duì)象指針使相應(yīng)的記錄為當(dāng)前記錄。Delete方法刪除當(dāng)前記錄或記錄組。應(yīng)用方法:rstStu.DeleteClone、Save、Move、Resync、UpdateBatch、CancelBatch、Cancel。第三部分 ADO事件過程概述ConnectionEvent事件兩大類RecordsetEvent事件1、 ConnectionEvent

43、事件ConnectionEvent事件過程說明BeginTransCompleteCommitTransCompleteRollbackTransComplete事務(wù)管理:關(guān)于連接上的當(dāng)前事務(wù)已經(jīng)開始、已經(jīng)提交、或者已經(jīng)回卷的通知。WillConnectConnectComplete Disconnect連接管理:關(guān)于當(dāng)前連接即將開始、已經(jīng)開始或已經(jīng)結(jié)束的通知。WillExceute ExecuteComplete命令執(zhí)行管理:關(guān)于連接的當(dāng)前命令的執(zhí)行即將開始或已經(jīng)結(jié)束的通知。2、 RecordsetEvent事件RecordsetEvent事件過程說明WillChangeFieldField

44、ChangeComplete字段更改管理:關(guān)于當(dāng)前字段值即將更改或者已經(jīng)更改的通知。WillMoveMoveCompleteEndofRecordset定位管理:關(guān)于當(dāng)前行在Recordset中的位置即將更改,已經(jīng)更改、或者已經(jīng)達(dá)到RecordSet結(jié)尾的通知。WillChangeRecordRecordChangeComplete行更改管理:關(guān)于Recordset當(dāng)前行的某些地方即將更改,或者已經(jīng)更改的通知WillChangeRecordsetRecordsetChangeComplete記錄集更改管理:關(guān)于當(dāng)前Recordset的某些地方即將更改,或已經(jīng)更改的通知。3、 定義帶有事件對(duì)象的

45、方法Dim cnnStu AS NEW ADODB.ConnectionDim WithEvent cnnStuEvent AS ADODB. Connectionset cnnStuEvent=cnnStu 打開事件支持Set cnnStuEvent=Nothing 關(guān)閉事件支持附件3數(shù)據(jù)庫(kù)應(yīng)用程序示例 根據(jù)學(xué)生數(shù)據(jù)庫(kù)(Stu.mdb)中的Student表的內(nèi)容,本示例簡(jiǎn)單介紹了針對(duì)數(shù)據(jù)庫(kù)進(jìn)行插入、刪除、瀏覽、查詢、更改操作的VB代碼實(shí)現(xiàn)。所用數(shù)據(jù)庫(kù)(stu.mdb)數(shù)據(jù)字典如表2-1、2-2、2-3所示。表2-1 Student基本表序號(hào)字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Sno文本6主鍵學(xué)

46、號(hào)2Sname文本10姓名3Ssex文本2性別4Sbirthday日期長(zhǎng)日期出生日期5Sphone文本12家庭電話6Saddress文本50家庭住址表2-2Course基本表序號(hào)字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Cno文本6主鍵課程號(hào)2Cname文本50課程名3CteacherName文本10任課教師4CBookName文本50教材名5Cpress文本50教材出版社表2-3Grade基本表序號(hào)字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Cno文本6主鍵課程號(hào)2Sno文本6學(xué)號(hào)3Grade數(shù)字長(zhǎng)整型Grade>=0 And Grade<=100成績(jī)其中表2-2、2-3在本示例中沒有用。示例程序

47、界面設(shè)計(jì)狀態(tài)見圖2-1。程序界面控件命名如表2-4所示。表2-4 程序界面控件控件類型程序命名Caption控件類型程序命名CaptionDataGriddtgStuFrameFrame1學(xué)生基本信息匯總FrameFrame2信息維護(hù)LabellblSno學(xué)號(hào)TextBoxtxtSnoLabellblSname姓名TextBoxtxtSnameLabellblSsex性別ComboBoxcboSsexLabellblSbirthday出生日期DTPickerdtpSbirthdayLabellblSphone家庭電話TextBoxtxtSphoneLabellblSaddress家庭住址Tex

48、tBoxtxtSaddressCommandButtoncmdAdd添新同學(xué)/確認(rèn)添加CommandButtoncmdUpdate編輯/更新CommandButtoncmdView瀏覽CommandButtoncmdFirst第一個(gè)CommandButtoncmdNext下一個(gè)CommandButtoncmdPrior上一個(gè)CommandButtoncmdLast最后一個(gè)CommandButtoncmdDelete刪除CommandButtoncmdQuery查詢CommandButtoncmdExit退出圖2-1 程序界面設(shè)計(jì)狀態(tài)程序代碼如下:Dim cnnStu As New ADODB.

49、Connection '定義連接對(duì)象變量,并使用NEW關(guān)鍵字注冊(cè)。Dim rstStu As New ADODB.Recordset '定義記錄集對(duì)象變量,并使用NEW關(guān)鍵字注冊(cè)。Sub textClear() '以下代碼使信息維護(hù)區(qū)域的相應(yīng)文本框置空,為添加記錄做準(zhǔn)備, '其它兩個(gè)控件性別與出生日期考慮控件性質(zhì)不置空. txtSno.Text = "" txtSname = "" txtSphone = "" txtSaddress = ""End SubPrivate Sub c

50、mdAdd_Click() Disable_View_Control cmdUpdate.Caption = "編輯" If cmdAdd.Caption = "添新同學(xué)" Then textClear cmdAdd.Caption = "確認(rèn)添加" Enable_TxtSno '使學(xué)號(hào)文本框能進(jìn)行編輯 Enable_Txt_OtherControl '自定義過程,使信息維護(hù)區(qū)域相關(guān)控件能進(jìn)行編輯 txtSno.SetFocus Else With rstStu '以下代碼進(jìn)行數(shù)據(jù)輸入的有效性驗(yàn)證 If Tri

51、m(txtSno) = "" Then '有效性驗(yàn)證,主鍵不能為空 MsgBox "學(xué)號(hào)不能為空!", vbExclamation, "請(qǐng)注意" txtSno.SetFocus Exit Sub End If '判斷該學(xué)號(hào)是否已經(jīng)存在!因?yàn)橹麈I值是惟一的. Dim CurrentPosition As Variant CurrentPosition = rstStu.Bookmark rstStu.Find "sno ='" & Trim(txtSno.Text) & &qu

52、ot;'" If rstStu.EOF <> True Then MsgBox "該記錄已經(jīng)存在!", vbExclamation, "警告" BindData '把該記錄顯示到信息維護(hù)區(qū)域 Exit Sub End If rstStu.Bookmark = CurrentPosition '恢復(fù)游標(biāo)指針位置 If Trim(txtSname) = "" Then '程序所加的約束,姓名不能為空 MsgBox "姓名不能為空!", vbExclamation,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論