VB數(shù)據(jù)庫(kù)編程模式_第1頁(yè)
VB數(shù)據(jù)庫(kù)編程模式_第2頁(yè)
VB數(shù)據(jù)庫(kù)編程模式_第3頁(yè)
VB數(shù)據(jù)庫(kù)編程模式_第4頁(yè)
VB數(shù)據(jù)庫(kù)編程模式_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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、216/32VB數(shù)據(jù)庫(kù)編程941 ODBC概述在傳統(tǒng)的數(shù)據(jù)庫(kù)治理系統(tǒng)中,每個(gè)數(shù)據(jù)庫(kù)治理系統(tǒng)都有自己的應(yīng)用程序開發(fā)接口(API),應(yīng)用程序使用數(shù)據(jù)庫(kù)系統(tǒng)所提供的專用開發(fā)工具(如嵌入式SQL語(yǔ)言)進(jìn)行開發(fā),如此的應(yīng)用程序只能運(yùn)行在特定的數(shù)據(jù)庫(kù)系統(tǒng)環(huán)境下,適應(yīng)性和可移植性比較差。在用戶硬件平臺(tái)或操作系統(tǒng)發(fā)生變化時(shí),應(yīng)用程序需要重新編寫。嵌入式SQL語(yǔ)言的另一個(gè)缺點(diǎn)是它只能存取某種特定的數(shù)據(jù)庫(kù)系統(tǒng),因此一個(gè)應(yīng)用程序只能連接同類的DBMS,而無法同時(shí)訪問多個(gè)不同的DBMS,而在實(shí)際應(yīng)用中通常是需要同時(shí)訪問多個(gè)不同的DBMS的。例如,在一個(gè)單位中,財(cái)務(wù)、生產(chǎn)和技術(shù)等部門常依照自身專業(yè)的特點(diǎn)選擇不同的DBM

2、S,而建立企業(yè)級(jí)治理信息系統(tǒng)時(shí),需要同時(shí)訪問各個(gè)部門的數(shù)據(jù)庫(kù)。這種情況下傳統(tǒng)的數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)方法就難以實(shí)現(xiàn)。為了解決這些問題,微軟公司開發(fā)了ODBC(Open DataBase Connectivity,即開放數(shù)據(jù)庫(kù)互連)。ODBC 是Microsoft公司開發(fā)的一套開放數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用程序接口規(guī)范,目前它已成為一種工業(yè)標(biāo)準(zhǔn),它提供了統(tǒng)一的數(shù)據(jù)庫(kù)應(yīng)用編程接口(API),為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動(dòng)態(tài)連接庫(kù)的運(yùn)行支持環(huán)境。使用ODBC開發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí),應(yīng)用程序調(diào)用的是標(biāo)準(zhǔn)的ODBC函數(shù)和SQL語(yǔ)句,數(shù)據(jù)庫(kù)底層操作由各個(gè)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序完成。因此應(yīng)用程序有專門好的適應(yīng)性和可移植性

3、,同時(shí)具備了同時(shí)訪問多種數(shù)據(jù)庫(kù)治理系統(tǒng)的能力,從而完全克服了傳統(tǒng)數(shù)據(jù)庫(kù)應(yīng)用程序的缺陷。942 ODBC體系結(jié)構(gòu)ODBC驅(qū)動(dòng)程序類似于Windows下的打印驅(qū)動(dòng)程序,對(duì)用戶來講,驅(qū)動(dòng)程序屏蔽了不同對(duì)象(數(shù)據(jù)庫(kù)系統(tǒng)或打印機(jī))間的差異。同樣地,ODBC屏蔽了DBMS之間的差異。ODBC的體系結(jié)構(gòu)如圖9.12所示。1ODBC數(shù)據(jù)庫(kù)應(yīng)用程序應(yīng)用程序的要緊任務(wù)包括:建立與數(shù)據(jù)源的連接;向數(shù)據(jù)源發(fā)送SQL請(qǐng)求;接收并處理請(qǐng)求的結(jié)果;斷開與數(shù)據(jù)源的連接等。圖9.12 ODBC的體系結(jié)構(gòu)2驅(qū)動(dòng)程序治理器驅(qū)動(dòng)程序治理器是一個(gè)Windows下的應(yīng)用程序,在Windows 95和Windows NT環(huán)境下的操縱面板上

4、分不顯示為“32位ODBC”圖標(biāo)和“ODBC”圖標(biāo)。假如在Windows 95和Windows NT環(huán)境下沒有那個(gè)圖標(biāo),講明沒有安裝ODBC驅(qū)動(dòng)程序治理器。此軟件可從Windows 95操作系統(tǒng)、Microsoft VC+、Microsoft VB等軟件中獲得。此治理器的要緊作用是用來裝載ODBC驅(qū)動(dòng)程序、治理數(shù)據(jù)源、檢查ODBC參數(shù)的合法性等。3DBMS驅(qū)動(dòng)程序 ODBC應(yīng)用程序不能直接存取數(shù)據(jù)庫(kù),它將所要執(zhí)行的操作提交給數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,通過驅(qū)動(dòng)程序?qū)崿F(xiàn)對(duì)數(shù)據(jù)源的各種操作,數(shù)據(jù)庫(kù)操作結(jié)果也通過驅(qū)動(dòng)程序返回給應(yīng)用程序。4數(shù)據(jù)源數(shù)據(jù)源是指任一種能夠通過ODBC連接的數(shù)據(jù)庫(kù)治理系統(tǒng),它包括要訪問的

5、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)的運(yùn)行平臺(tái)。數(shù)據(jù)源名掩蓋了數(shù)據(jù)庫(kù)服務(wù)器或數(shù)據(jù)庫(kù)文件間的差不,通過定義多個(gè)數(shù)據(jù)源,每個(gè)數(shù)據(jù)源指向一個(gè)服務(wù)器名,就可在應(yīng)用程序中實(shí)現(xiàn)同時(shí)訪問多個(gè)DBMS的目的。數(shù)據(jù)源(Data Source Name,簡(jiǎn)稱DSN)是驅(qū)動(dòng)程序與DBS連接的橋梁,數(shù)據(jù)源不是DBS,而是用于表達(dá)一個(gè)ODBC驅(qū)動(dòng)程序和DBMS專門連接的命名。在連接中,用數(shù)據(jù)源名來代表用戶名、服務(wù)器名、所連接的數(shù)據(jù)庫(kù)名等,能夠?qū)?shù)據(jù)源名看成是與一個(gè)具體數(shù)據(jù)庫(kù)建立的連接。數(shù)據(jù)源分為以下三類: (1)用戶數(shù)據(jù)源:用戶創(chuàng)建的數(shù)據(jù)源,稱為“用戶數(shù)據(jù)源”。現(xiàn)在只有創(chuàng)建者才能使用,同時(shí)只能在所定義的機(jī)器上運(yùn)行。任何用戶都不能使用其他用戶

6、創(chuàng)建的用戶數(shù)據(jù)源。 (2)系統(tǒng)數(shù)據(jù)源:所有用戶和在Windows NT下以服務(wù)方式運(yùn)行的應(yīng)用程序均可使用系統(tǒng)數(shù)據(jù)源。(3)文件數(shù)據(jù)源:文件數(shù)據(jù)源是ODBC 3.0以上版本增加的一種數(shù)據(jù)源,可用于企業(yè)用戶,ODBC驅(qū)動(dòng)程序也安裝在用戶的計(jì)算機(jī)上??傊琌DBC提供了在不同數(shù)據(jù)庫(kù)環(huán)境中為CS結(jié)構(gòu)的客戶機(jī)訪問異構(gòu)數(shù)據(jù)庫(kù)的接口,也確實(shí)是在由異構(gòu)數(shù)據(jù)庫(kù)服務(wù)器構(gòu)成的客戶機(jī)服務(wù)器結(jié)構(gòu)中,要實(shí)現(xiàn)對(duì)不同數(shù)據(jù)庫(kù)進(jìn)行的數(shù)據(jù)訪問,就需要一個(gè)能連接不同的客戶機(jī)平臺(tái)到不同服務(wù)器的橋梁,ODBC確實(shí)是起這種連接作用的橋梁。ODBC提供了一個(gè)開放的、標(biāo)準(zhǔn)的能訪問從PC機(jī)、小型機(jī)到大型機(jī)數(shù)據(jù)庫(kù)數(shù)據(jù)的接口。使用ODBC標(biāo)準(zhǔn)接口的

7、應(yīng)用程序,開發(fā)者能夠不必深入了解要訪問的數(shù)據(jù)庫(kù)系統(tǒng),比如其支持的操作和數(shù)據(jù)類型等信息,而只需掌握通用的ODBC API編程方法即可。使用ODBC的另一個(gè)好處是當(dāng)作為數(shù)據(jù)庫(kù)源的數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)庫(kù)治理系統(tǒng)升級(jí)或轉(zhuǎn)換到不同的數(shù)據(jù)庫(kù)治理系統(tǒng)時(shí),客戶機(jī)端應(yīng)用程序不需作任何改變,因此利用ODBC開發(fā)的數(shù)據(jù)庫(kù)應(yīng)用程序具有專門好的移植性。 95 ADO數(shù)據(jù)控件951 ADO對(duì)象模型 ADO(ActiveX Data Object)數(shù)據(jù)訪問接口是Microsoft處理數(shù)據(jù)庫(kù)信息的最新技術(shù)。它是一種ActiveX對(duì)象,采納了被稱為OLE DB的數(shù)據(jù)訪問模式,是數(shù)據(jù)訪問對(duì)象DAO、遠(yuǎn)程數(shù)據(jù)對(duì)象RDO和開放數(shù)據(jù)庫(kù)

8、互連ODBC三種方式的擴(kuò)展。ADO對(duì)象模型定義了個(gè)可編程的分層對(duì)象集合,要緊由三個(gè)對(duì)象成員Connection、Command和Recordset對(duì)象,以及幾個(gè)集合對(duì)象Errors、Parameters和Fields等所組成。圖9.13示意了這些對(duì)象之間的關(guān)系。表9.6是對(duì)這些對(duì)象的分工描述。Connection對(duì)象Connection對(duì)象Error對(duì)象Error集合Error對(duì)象Error集合Command對(duì)象Command對(duì)象Parameter對(duì)象Parameter集合Parameter對(duì)象Parameter集合Recordset對(duì)象Recordset對(duì)象Field對(duì)象Field集合Fie

9、ld對(duì)象Field集合圖9.13 ADO對(duì)象模型表9.6 ADO對(duì)象描述對(duì)象名描 述Connection連接數(shù)據(jù)來源Command從數(shù)據(jù)源獵取所需數(shù)據(jù)的命令信息Recordset所獲得的一組記錄組成的記錄集Error在訪問數(shù)據(jù)時(shí),由數(shù)據(jù)源所返回的錯(cuò)誤信息Parameter與命令對(duì)象有關(guān)的參數(shù)Field包含了記錄集中某個(gè)字段的信息 要想在程序中使用ADO對(duì)象,必須先為當(dāng)前工程引用ADO的對(duì)象庫(kù)。引用方式是執(zhí)行“工程”菜單的“引用”命令,啟動(dòng)引用對(duì)話框,在清單中選取“Microsoft ActiveX Data Objects 2.0 Library”選項(xiàng)。952 使用ADO數(shù)據(jù)控件 在使用ADO

10、數(shù)據(jù)控件前,必須先通過“工程|部件”菜單命令選擇Microsoft ADO Data Control 6.0(OLEDB)”選項(xiàng),將ADO數(shù)據(jù)控件添加到工具箱。ADO數(shù)據(jù)控件與Visual Basic的內(nèi)部Data控件專門相似,它同意使用ADO數(shù)據(jù)控件的差不多屬性快速地創(chuàng)建與數(shù)據(jù)庫(kù)的連接。1ADO數(shù)據(jù)控件的差不多屬性 (1)ConnectionString屬性 ADO控件沒有DatabaseName屬性,它使用ConnectionString屬性與數(shù)據(jù)庫(kù)建立連接。該屬性包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息,ConnectionString屬性帶有4個(gè)參數(shù),如表9.7所示。(2)RecordSo

11、urce屬性 RecordSource確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構(gòu)成記錄集對(duì)象Recordset。該屬性值能夠是數(shù)據(jù)庫(kù)中的單個(gè)表名,一個(gè)存儲(chǔ)查詢,也能夠是使用SQL查詢語(yǔ)言的一個(gè)查詢字符串。表9.7 ConnectionString屬性參數(shù)參數(shù)描述Provide指定數(shù)據(jù)源的名稱FileName指定數(shù)據(jù)源所對(duì)應(yīng)的文件名RemoteProvide在遠(yuǎn)程數(shù)據(jù)服務(wù)器打開一個(gè)客戶端時(shí)所用的數(shù)據(jù)源名稱RemoteServer在遠(yuǎn)程數(shù)據(jù)服務(wù)器打開一個(gè)主機(jī)端時(shí)所用的數(shù)據(jù)源名稱 (3)ConnectionTimeout屬性用于數(shù)據(jù)連接的超時(shí)設(shè)置,若在指定時(shí)刻內(nèi)連接不成功顯示超時(shí)信息。(4)MaxRecord

12、s屬性定義從一個(gè)查詢中最多能返回的記錄數(shù)。2. ADO數(shù)據(jù)控件的方法和事件ADO數(shù)據(jù)控件的方法和事件與Data控件的方法和事件完全一樣。3設(shè)置ADO數(shù)據(jù)控件的屬性 下面通過使用ADO數(shù)據(jù)控件連接Student.mdb數(shù)據(jù)庫(kù)來講明ADO數(shù)據(jù)控件屬性的設(shè)置。 步驟1:在窗體上放置ADO數(shù)據(jù)控件,控件名采納默認(rèn)名“Adodcl”。 步驟2:?jiǎn)螕鬉DO控件屬性窗口中的ConnectionString屬性右邊的“”按鈕,彈出“屬性頁(yè)”對(duì)話框。在該對(duì)話框中同意通過三種不同的方式連接數(shù)據(jù)源: “使用連接字符串”只需要單擊“生成”按鈕,通過選項(xiàng)設(shè)置自動(dòng)產(chǎn)生連接字符串。 “使用Data Link文件”表示通過個(gè)

13、連接文件來完成?!笆褂肙DBC數(shù)據(jù)資源名稱”能夠通過下拉式列表框,選擇某個(gè)創(chuàng)建好的數(shù)據(jù)源名稱(DSN),作為數(shù)據(jù)來源對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行操縱。步驟3:采納“使用連接字符串”方式連接數(shù)據(jù)源。單擊“生成”按鈕,打開“數(shù)據(jù)鏈接屬性”對(duì)話框。在“提供者”選項(xiàng)卡內(nèi)選擇一個(gè)合適的OLE DB數(shù)據(jù)源,Student.mdb是Access數(shù)據(jù)庫(kù),選擇“Microsoft Jet 3.51 OLE DB Provider”選項(xiàng)。然后單擊“下步”按鈕或打開“連接”選項(xiàng)卡,在對(duì)話框內(nèi)指定數(shù)據(jù)庫(kù)文件,那個(gè)地點(diǎn)為Student.mdb。為保證連接有效,可單擊“連接”選項(xiàng)卡右下方的“測(cè)試連接”按鈕,假如測(cè)試成功則關(guān)閉Conn

14、ectionString屬性頁(yè)。 步驟4:?jiǎn)螕鬉DO控件屬性窗口中的RecordSource屬性右邊的“”按鈕,彈出記錄源屬性頁(yè)對(duì)話框。 在“命令類型”下拉式列表框中選擇“2adCmdTable”選項(xiàng),在“表或存儲(chǔ)過程名稱”下拉式列表框中選擇Student.mdb數(shù)據(jù)庫(kù)中的“差不多情況”表,關(guān)閉記錄源屬性頁(yè)?,F(xiàn)在,已完成了ADO數(shù)據(jù)控件的連接工作。由于ADO數(shù)據(jù)控件是一個(gè)ActiveX控件,也能夠用鼠標(biāo)右鍵單擊ADO數(shù)據(jù)控件,在彈出的快捷菜單中選擇“ADODC屬性”菜單命令,打開ADO數(shù)據(jù)控件屬性頁(yè)對(duì)話框,一次完成步驟1步驟4的全部設(shè)置。953 ADO數(shù)據(jù)控件上新增綁定控件的使用 隨著ADO對(duì)

15、象模型的引入,Visual Basic 6.0除了保留以往的一些綁定控件外,又提供了一些新的成員來連接不同數(shù)據(jù)類型的數(shù)據(jù)。這些新成員要緊有DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。這些新增綁定控件必須使用ADO數(shù)據(jù)控件進(jìn)行綁定。 Visual Basic 6.0在綁定控件上不僅對(duì)DataSource和DataField屬性在連接功能上作了改進(jìn),又增加了DataMember與DataFormat屬性使數(shù)據(jù)訪問的隊(duì)列更加完整。DataMember屬性同意處理多個(gè)數(shù)據(jù)集,DataFormat屬性

16、用于指定數(shù)據(jù)內(nèi)容的顯示格式。 例9.6 使用ADO數(shù)據(jù)控件和DataGrid數(shù)據(jù)網(wǎng)格控件掃瞄數(shù)據(jù)庫(kù)Student.mdb,并使之具有編輯功能。 在窗體上放置ADO數(shù)據(jù)控件,并按前面介紹的ADO數(shù)據(jù)控件屬性設(shè)置過程連接數(shù)據(jù)庫(kù)Student.mdb中的差不多情況表。 DataGrid控件同意用戶同時(shí)掃瞄或修改多個(gè)記錄的數(shù)據(jù)。在使用DataGrid控件前也必須先通過“工程|部件”菜單命令選擇“Microsoft DataGrid Control 6.0(OLEDB)”選項(xiàng),將DataGrid控件添加到工具箱,再將DataGrid控件放置到窗體上。設(shè)置DataGrid網(wǎng)格控件的DataSource屬性

17、為Adodc1,就可將DataGrid1綁定到數(shù)據(jù)控件Adodc1上。 顯示在DataGrid網(wǎng)格內(nèi)的記錄集,能夠通過DataGrid控件的AllowAddNew、AllowDelete和AllowUpdate屬性設(shè)置操縱增,刪、改操作。 假如要改變DataGrid網(wǎng)格上顯示的字段,可用鼠標(biāo)右鍵單擊DataGrid控件,在彈出的快捷菜單中選擇“檢索字段”選項(xiàng)。Visual Basic提示是否替換現(xiàn)有的網(wǎng)格布局,單擊“是”按鈕就可將表中的字段裝載到DataGrid控件中。再次用鼠標(biāo)右鍵單擊DataGrid控件,在彈出的快捷菜單中選擇“編輯”選項(xiàng),進(jìn)入數(shù)據(jù)網(wǎng)格字段布局的編輯狀態(tài),現(xiàn)在,當(dāng)鼠標(biāo)指在字

18、段名上時(shí),鼠標(biāo)指針變成黑色向下箭頭。用鼠標(biāo)右鍵單擊需要修改的字段名,在彈出的快捷菜單中選擇“刪除”選項(xiàng),就可從DataGrid控件中刪除該字段,也可選擇“屬性”選項(xiàng)修改字段的顯示寬度或字段標(biāo)題。圖9.14所示為具有增、刪、改功能的數(shù)據(jù)網(wǎng)格綁定。標(biāo)有號(hào)的記錄行表示同意增加新記錄。圖9.14 具有增、刪、改功能的數(shù)據(jù)網(wǎng)格綁定954 使用數(shù)據(jù)窗體向?qū)isual Basic 6.0提供了一個(gè)功能強(qiáng)大的數(shù)據(jù)窗體向?qū)?,通過幾個(gè)交互過程,便能創(chuàng)建前面介紹的ADO數(shù)據(jù)控件和綁定控件,構(gòu)成個(gè)訪問數(shù)據(jù)的窗口。數(shù)據(jù)窗體向?qū)儆谕饨映绦?,在使用前必須從Visual Basic 6.0集成開發(fā)環(huán)境的橫向菜單中點(diǎn)擊“外

19、接程序”,再點(diǎn)擊子菜單的“外接程序治理器”,從打開的“外接程序治理器”窗口選擇 “VB 6數(shù)據(jù)窗體向?qū)А?命令,將數(shù)據(jù)窗體裝入到“外接程序”中。那個(gè)地點(diǎn)以Student.mdb數(shù)據(jù)庫(kù)的差不多情況表作為數(shù)據(jù)源來講明數(shù)據(jù)訪問窗口建立的過程。 例9.7 使用數(shù)據(jù)窗體向?qū)Ыtudent.mdb數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問對(duì)話框。 步驟1:執(zhí)行“外接程序”菜單中的“數(shù)據(jù)窗體向?qū)А泵?,進(jìn)入“數(shù)據(jù)窗體向?qū)?介紹”對(duì)話框,能夠利用先前建立的數(shù)據(jù)窗體信息配置文件創(chuàng)建外觀相似的數(shù)據(jù)訪問窗體,選擇“無”將不使用現(xiàn)有的配置文件。 步驟2:?jiǎn)螕簟跋虏健卑粹o,進(jìn)入“數(shù)據(jù)窗體向?qū)?數(shù)據(jù)庫(kù)類型”對(duì)話框,能夠選擇任何版本的Acces

20、s數(shù)據(jù)庫(kù)或任何ODBC兼容的用于遠(yuǎn)程訪問的數(shù)據(jù)庫(kù)。本例中選擇Access數(shù)據(jù)庫(kù)。 步驟3:在“數(shù)據(jù)窗體向?qū)?shù)據(jù)庫(kù)”對(duì)話框內(nèi)選擇具體的數(shù)據(jù)庫(kù)文件。本例為Student.mdb數(shù)據(jù)庫(kù)。步驟4:在“數(shù)據(jù)窗體向?qū)orm”對(duì)話框內(nèi)設(shè)置應(yīng)用窗體的工作特性。其中,在“窗體名稱為”文本框輸入將要?jiǎng)?chuàng)建的窗體名;“窗體布局”指定窗口內(nèi)顯示數(shù)據(jù)的類型,能夠按單條記錄形式顯示,也能夠按數(shù)據(jù)網(wǎng)格形式同時(shí)顯示多條記錄;綁定類型用于選擇連接數(shù)據(jù)來源的方式,能夠使用ADODC數(shù)據(jù)控件訪問數(shù)據(jù),也能夠使用ADO對(duì)象程序代碼訪問數(shù)據(jù)。本例窗體名為frmjbqk,選“單個(gè)記錄”形式,使用“ADO數(shù)據(jù)控件”訪問數(shù)據(jù)。步驟5:在“數(shù)

21、據(jù)窗體向?qū)?記錄源”對(duì)話框內(nèi)選擇所需要的數(shù)據(jù)。 其中,“記錄源”下拉式列表框用于選擇數(shù)據(jù)庫(kù)中的表單,本例選擇“差不多情況”表;窗口中間的4個(gè)箭頭按鈕用于選定字段,“列排序按”下拉式列表框用于選擇排序依據(jù)。步驟6:在“數(shù)據(jù)窗體向?qū)?控件選擇”對(duì)話框內(nèi),選擇所創(chuàng)建的數(shù)據(jù)訪問窗體需要提供哪些操作按鈕。步驟7:進(jìn)入“數(shù)據(jù)窗體向?qū)б淹瓿伞睂?duì)話框,能夠?qū)⒄麄€(gè)操作過程保存到一個(gè)向?qū)渲梦募?rwp中。單擊“完成”按鈕結(jié)束數(shù)據(jù)窗體向?qū)У慕换?,現(xiàn)在向?qū)⒆詣?dòng)產(chǎn)生數(shù)據(jù)訪問對(duì)話框的畫面及代碼。能夠?qū)Ξa(chǎn)生的窗體布局形式進(jìn)行調(diào)整或在此基礎(chǔ)上加上其他控件對(duì)象。圖9.15為調(diào)整照片位置的數(shù)據(jù)訪問對(duì)話框運(yùn)行結(jié)果。各按鈕的程序

22、代碼不難理解,請(qǐng)讀者自己閱讀。圖9.15 數(shù)據(jù)窗體向?qū)?chuàng)建的數(shù)據(jù)訪問對(duì)話框圖9.16為窗體布局(步驟4)選定網(wǎng)格(數(shù)據(jù)表)形式的數(shù)據(jù)訪問窗口運(yùn)行結(jié)果。圖9.17所示為窗體布局選定主表細(xì)表形式,以差不多情況表作為主表,學(xué)生成績(jī)表為細(xì)表所建立的數(shù)據(jù)訪問窗口。圖9.18為窗體布局(步驟4)選定MSHFlexGrid數(shù)據(jù)網(wǎng)格形式的數(shù)據(jù)訪問窗口運(yùn)行結(jié)果。圖9.16 選定網(wǎng)格(數(shù)據(jù)表)形式 圖9.18 選定MSHFlexGrid數(shù)據(jù)網(wǎng)格圖9.17 選定主表細(xì)表形式96 VB中SQL的實(shí)現(xiàn)SQL中使用SELECT語(yǔ)句實(shí)現(xiàn)查詢,SELECT語(yǔ)句差不多上是數(shù)據(jù)庫(kù)記錄集的定義語(yǔ)句。Data控件的RecordSou

23、rce屬性不定是數(shù)據(jù)表名,能夠是數(shù)據(jù)表中的某些行或多個(gè)數(shù)據(jù)表中的數(shù)據(jù)組合。能夠直接在Data控件的RecordSource屬性欄中輸入SQL,也可在代碼中通過SQL語(yǔ)句將選擇的記錄集賦給數(shù)據(jù)控件的RecordSource屬性,也可給予對(duì)象變量。例9.8 將例9.5中的查找功能改用SQL語(yǔ)句處理,顯示某專業(yè)的學(xué)生記錄。使用SQL語(yǔ)句查詢只要將例9.5中命令按鈕Command5_Click事件寫為如下代碼:Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(請(qǐng)輸入專業(yè), 查找窗) Data1.RecordSource = S

24、elect * From 差不多情況 Where 專業(yè) = & mzy & Data1.Refresh If Data1.Recordset.EOF Then MsgBox 無此專業(yè)!, , 提示 Data1.RecordSource = 差不多情況 Data1.Refresh End IfEnd Sub 程序中“Select *”選擇表中所有字段(也能夠指定選擇部分列);“From差不多情況”短語(yǔ)指定數(shù)據(jù)來源;“Where 專業(yè) = & mzy & ”短語(yǔ)構(gòu)成查詢條件,用于過濾表中的記錄;Data1.Refresh方法激活這些變化?,F(xiàn)在,若Data1.Recordset.EOF為True,表

25、示記錄過濾后許多據(jù),重新打開原來的差不多情況表。注意:代碼中的兩處Refresh語(yǔ)句不能合用為一句,這是因?yàn)樵趫?zhí)行了Select命令后,必須激活這些變化,然后才能推斷記錄集內(nèi)有許多據(jù)。也可用SQL語(yǔ)句實(shí)現(xiàn)模糊查詢,命令按鈕Command5_Click事件改為如下代碼:Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(請(qǐng)輸入專業(yè), 查找窗) Data1.RecordSource = Select * From 差不多情況 Where 專業(yè) like * & mzy & * Data1.Refresh If Data1.R

26、ecordset.EOF Then MsgBox 無此專業(yè)!, , 提示 Data1.RecordSource = 差不多情況 Data1.Refresh End IfEnd Sub 例9.9 用SQL語(yǔ)句從Student.mdb數(shù)據(jù)庫(kù)的兩個(gè)數(shù)據(jù)表中選擇數(shù)據(jù)構(gòu)成記錄集,并通過數(shù)據(jù)控件掃瞄記錄集。在窗體上放置與例9.2類似的控件,如圖9.20所示。Data控件的DatabaseName屬性指定數(shù)據(jù)庫(kù)Student.mdb,RecordSource屬性空缺,各文本框的DataSource=Data1,DataField屬性分不設(shè)置為學(xué)號(hào)、姓名、課程、成績(jī),而照片字段綁定圖形框。本例要求從差不多情況

27、中選擇學(xué)生的學(xué)號(hào)、姓名、照片,從學(xué)生成績(jī)表中選擇該學(xué)生的課程和成績(jī)來構(gòu)成記錄集,可在Form_ Load事件中使用SQL語(yǔ)句,通過“Where 學(xué)生成績(jī)表.學(xué)號(hào)=差不多情況.學(xué)號(hào)”短語(yǔ)實(shí)現(xiàn)兩表之間的連接,用Select命令從學(xué)生成績(jī)表中選擇課程、成績(jī)字段,從差不多情況表中選擇學(xué)號(hào)、姓名和照片字段構(gòu)成記錄集:Private Sub Form_Load() Data1.RecordSource = Select 差不多情況.學(xué)號(hào),差不多情況.姓名,差不多情況.照片,學(xué)生成績(jī)表.課程,學(xué)生成績(jī)表.成績(jī) From 學(xué)生成績(jī)表,差不多情況 Where 學(xué)生成績(jī)表.學(xué)號(hào)=差不多情況.學(xué)號(hào)End Sub 當(dāng)

28、窗體啟動(dòng)后,數(shù)據(jù)顯示如圖 9.19所示,數(shù)據(jù)控件上的箭頭按鈕可改變記錄位置。假如要求顯示的記錄按一定的順序排列,可使用ORDER BY子句。圖 9.19 數(shù)據(jù)顯示注意:當(dāng)FROM子句列出多個(gè)表時(shí),它們出現(xiàn)的順序并不重要。Select短語(yǔ)中字段的排列決定了所產(chǎn)生的記錄集內(nèi)每一列數(shù)據(jù)的排列順序。為了提高可讀性能夠重新排序表中的字段。例9.10 用SQL指令按專業(yè)統(tǒng)計(jì)Student.mdb數(shù)據(jù)庫(kù)中各專業(yè)的人數(shù),要求按圖9.20所示形式輸出。在窗體上放置一個(gè)Data控件和一個(gè)網(wǎng)格控件MSFlexGrid1。Data1的DatabaseName屬性指定數(shù)據(jù)庫(kù)Student.mdb,網(wǎng)格控件的DataSo

29、urce=Data1。圖9.20 通過數(shù)據(jù)控件掃瞄記錄集 為了統(tǒng)計(jì)各專業(yè)的人數(shù),需要對(duì)差不多情況表內(nèi)的記錄按專業(yè)分組?!癎roup By專業(yè)”可將同一專業(yè)的記錄合并成一條新記錄。要記錄統(tǒng)計(jì)結(jié)果,需要構(gòu)造一個(gè)輸出字段,現(xiàn)在可使用SQL的統(tǒng)計(jì)函數(shù)Count()作為輸出字段,它按專業(yè)分組創(chuàng)建摘要值。若希望按用戶要求的標(biāo)題顯示統(tǒng)計(jì)摘要值,可用As短語(yǔ)命名一個(gè)不名?!鞍磳I(yè)統(tǒng)計(jì)人數(shù)”按鈕的指令代碼為:Private Sub Command1_Click() Data1.RecordSource = select 專業(yè),count(*) as 人數(shù) from 差不多情況 group by 專業(yè) Data1

30、.RefreshEnd Sub 運(yùn)行結(jié)果如圖9.21。圖9.21 使用SQL的統(tǒng)計(jì)函數(shù) 有時(shí),我們只要返回一定數(shù)量的記錄,如獵取平均成績(jī)最好的前5名,則“按平均成績(jī)統(tǒng)計(jì)前5名” 按鈕的指令代碼為:Private Sub Command2_Click() Data1.RecordSource = select top 5 學(xué)號(hào),avg(成績(jī)) as 平均成績(jī) from 學(xué)生成績(jī)表 group by 學(xué)號(hào) order by avg(成績(jī)) desc Data1.RefreshEnd Sub那個(gè)地點(diǎn),“Group by 學(xué)號(hào)”短語(yǔ)將同一學(xué)生的各門課程的記錄合并成一條記錄,由Avg(成績(jī))計(jì)算出該學(xué)生

31、的平均成績(jī),“Order By Avg(成績(jī)) Desc”短語(yǔ)按平均成績(jī)的降序排列數(shù)據(jù),“Top 5”短語(yǔ)返回最前面的5條記錄。假如不包括ORDER BY子句,查詢將從學(xué)生成績(jī)表中返回隨機(jī)的5條記錄?!盎謴?fù)原表內(nèi)容”按鈕的指令代碼為:Private Sub Command3_Click()Data1.RecordSource = 差不多情況Data1.RefreshEnd Sub以上介紹的是在Data控件上使用SQL,假如要在ADO數(shù)據(jù)控件上使用SQL語(yǔ)句,最好通過代碼配合ADO數(shù)據(jù)控件完成數(shù)據(jù)庫(kù)的連接,這可給程序帶來更大的靈活性。例9.11 我們將例9.9中的Data控件改用ADO數(shù)據(jù)控件,

32、用SQL語(yǔ)句從Student.mdb數(shù)據(jù)庫(kù)的兩個(gè)數(shù)據(jù)表中選擇數(shù)據(jù)構(gòu)成記錄集。 將Data控件改用ADO數(shù)據(jù)控件Adodc1,各文本框的Datasource=Adodc1,DataField屬性分不設(shè)置為學(xué)號(hào)、姓名、課程、成績(jī),而字段照片綁定圖形框。ADO數(shù)據(jù)控件的ConnectionString屬性設(shè)置為與數(shù)據(jù)源連接的相關(guān)信息,通過操作完成與student.mdb的數(shù)據(jù)連接(現(xiàn)在,可查看到ConnectionString屬性的內(nèi)容);DataSource指定連接的數(shù)據(jù)庫(kù)文件名,如圖9.22。圖9.22 使用ADO數(shù)據(jù)控件即DataSource屬性使用SQL語(yǔ)句:select 學(xué)生成績(jī)表.*,差

33、不多情況.姓名,差不多情況.照片 from 學(xué)生成績(jī)表,差不多情況 where 學(xué)生成績(jī)表.學(xué)號(hào)=差不多情況.學(xué)號(hào)程序執(zhí)行后將產(chǎn)生與圖9.22所示相同的效果。例9.12 設(shè)計(jì)一個(gè)窗體,計(jì)算Student.mdb數(shù)據(jù)庫(kù)內(nèi)學(xué)生成績(jī)表中每個(gè)學(xué)生的平均成績(jī),產(chǎn)生姓名、平均成績(jī)和最低成績(jī)?nèi)?xiàng)數(shù)據(jù),按平均成績(jī)降序排列數(shù)據(jù),并用該數(shù)據(jù)作圖。 學(xué)生成績(jī)表中沒有平均成績(jī)和最低成績(jī)這兩項(xiàng)數(shù)據(jù),能夠在SELECT子句內(nèi)使用統(tǒng)計(jì)函數(shù)AVG()和Min()產(chǎn)生,“Group By學(xué)號(hào)”可將同一學(xué)生的記錄合并成一條新記錄。學(xué)生成績(jī)表中沒有姓名字段,故需要通過條件“差不多情況.學(xué)號(hào)=學(xué)生成績(jī)表.學(xué)號(hào)”從差不多情況表取得。然

34、后,將產(chǎn)生的記錄集連接到ADO數(shù)據(jù)控件上。 要顯示作圖數(shù)據(jù),可在窗體上放置一個(gè)網(wǎng)格控件(選擇工程部件中Microsoft Data Grid Control 6.0 (OLEDB)),設(shè)置網(wǎng)格的DataSource=Adodcl,將其綁定到ADO數(shù)據(jù)控件上。此例將Adodc1控件的Visible屬性設(shè)為False,故在圖9.22中看不到Adodc1控件。 要繪制圖表,可使用綁定控件MsChart。MsChart控件也是一個(gè)Active X控件,需要通過“工程部件”菜單命令,將MsChart控件添加到工具箱中。要將作圖數(shù)據(jù)傳送到Mschart控件,只需要設(shè)置MsChart1.DataSource

35、=Adodc1。假如只要選擇部分?jǐn)?shù)據(jù)作圖,能夠?qū)⒆鲌D數(shù)據(jù)存入到數(shù)組,再設(shè)置MsChart1.Data=數(shù)組名即可。 將Adodcl的RecordSource屬性設(shè)置為SQL語(yǔ)句,代碼如下:”select 差不多情況.姓名,avg(成績(jī)) as 平均成績(jī),min(成績(jī)) as 最低成績(jī) from 學(xué)生成績(jī)表,差不多情況 where 學(xué)生成績(jī)表.學(xué)號(hào)=差不多情況.學(xué)號(hào) group by 學(xué)生成績(jī)表.學(xué)號(hào),差不多情況.姓名 order by avg(成績(jī)) desc”程序執(zhí)行后將產(chǎn)生圖9.23所示的效果。圖9.23 顯示作圖數(shù)據(jù)97 VB中使用ODBC在VB環(huán)境開發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí),與數(shù)據(jù)庫(kù)連接和對(duì)數(shù)據(jù)

36、庫(kù)的數(shù)據(jù)操作是通過ODBC、Microsoft Jet(數(shù)據(jù)庫(kù)引擎)等實(shí)現(xiàn)的。Microsoft Jet要緊用于本地?cái)?shù)據(jù)庫(kù),而在CS結(jié)構(gòu)的應(yīng)用中一般用ODBC。例9.13 使用ADO數(shù)據(jù)控件,設(shè)計(jì)一個(gè)簡(jiǎn)單窗體,用來掃描student.mdb數(shù)據(jù)庫(kù)的差不多情況表。窗體中幾個(gè)約束數(shù)據(jù)文本框綁定到連接表中當(dāng)前記錄的ADO數(shù)據(jù)控件。那個(gè)項(xiàng)目不需編程,步驟如下:步驟1:開始新項(xiàng)目,并在項(xiàng)目工具箱中加進(jìn)ADO數(shù)據(jù)控件。 步驟2:在窗體上放一個(gè)ADO數(shù)據(jù)控件的實(shí)例。 步驟3:右鍵單擊控件,并從彈出菜單中選擇“ADODC屬性”命令(或單擊Adodc1的ConnectionString屬性旁的“”按鈕),打開A

37、DO數(shù)據(jù)控件的屬性頁(yè)。 步驟4:選擇“通用”標(biāo)簽,并選擇“使用ODBC數(shù)據(jù)資源名稱”單選項(xiàng)。 步驟5:現(xiàn)在要指定數(shù)據(jù)源(ADO數(shù)據(jù)控件聯(lián)系的數(shù)據(jù)庫(kù))。能夠看出,能夠指定多種數(shù)據(jù)庫(kù),但應(yīng)用程序用相同的方法處理。不管實(shí)際提供表格的數(shù)據(jù)庫(kù)為何種形式,它用相同的語(yǔ)句訪問表格及其記錄。 數(shù)據(jù)源名確實(shí)是系統(tǒng)明白的數(shù)據(jù)庫(kù)名。數(shù)據(jù)源名只要生成一次,此后任何應(yīng)用程序都能夠使用。假如系統(tǒng)上沒有數(shù)據(jù)源名,則按下列步驟生成新的數(shù)據(jù)源名: 1.單擊“新建”按鈕,打開“創(chuàng)建新數(shù)據(jù)源”窗口。在那個(gè)窗口中能夠選擇數(shù)據(jù)源類型,選項(xiàng)包括: 文件數(shù)據(jù)源 所有用戶均能夠訪問的數(shù)據(jù)庫(kù)文件。 用戶數(shù)據(jù)源 只有你能訪問的數(shù)據(jù)庫(kù)文件。 系統(tǒng)

38、數(shù)據(jù)源 能登錄該機(jī)器的任何用戶都能訪問的數(shù)據(jù)庫(kù)文件。 2選擇“系統(tǒng)數(shù)據(jù)源”,以便從網(wǎng)上登錄測(cè)試鎖定機(jī)制(假如在網(wǎng)絡(luò)環(huán)境中)。 3單擊“下一步”按鈕顯示“創(chuàng)建新數(shù)據(jù)源”窗口,指定訪問數(shù)據(jù)庫(kù)所用的驅(qū)動(dòng)程序。 驅(qū)動(dòng)程序必須符合數(shù)據(jù)庫(kù)。能夠看出,數(shù)據(jù)源能夠是個(gè)大數(shù)據(jù)庫(kù),包括Access、Oracle、 SQL Server。本例采納Access數(shù)據(jù)庫(kù)。 4選擇Microsoft Access Driver,并單擊“下一步”按鈕。 新窗口指出,已選擇了系統(tǒng)數(shù)據(jù)源并用Access驅(qū)動(dòng)程序訪問。 5單擊“完成”按鈕,生成數(shù)據(jù)源。 這時(shí)就能夠指定將哪個(gè)Access數(shù)據(jù)庫(kù)給予新建的數(shù)據(jù)源。在出現(xiàn)的“ODBC M

39、icrosoft Access 安裝”窗口中,執(zhí)行如下操作步驟: 6在第一個(gè)框中,指定數(shù)據(jù)源名mystudent,在“描述”框中,輸入簡(jiǎn)短講明:student數(shù)據(jù)源(講明能夠空缺)。 7單擊“選擇”按鈕,并通過“選定數(shù)據(jù)庫(kù)”窗口選擇數(shù)據(jù)庫(kù),找到VB98文件夾中的student.mdb(假設(shè)student.mdb存放在此)。 8回到ADO數(shù)據(jù)控件的屬性頁(yè)時(shí),新的數(shù)據(jù)源即會(huì)出現(xiàn)在“使用ODBC數(shù)據(jù)資源名稱”下拉清單中。步驟6:展開下拉清單,并選擇mystudent數(shù)據(jù)源。實(shí)際上,這就指定了要使用的數(shù)據(jù)庫(kù)(類似于設(shè)計(jì)Data控件的DatabaseName屬性)。下一個(gè)任務(wù)是,選擇ADO數(shù)據(jù)控件能看到

40、的數(shù)據(jù)庫(kù)記錄(表格或SQL語(yǔ)句返回的記錄集)。 步驟7:切換到“記錄源”標(biāo)簽(或單擊Adodc1的RecordSource屬性旁的“”按鈕)。 步驟8:在“命令類型” 下拉清單中,選擇adCmdTable項(xiàng)目,這是記錄源的類型。 步驟9:在“表或存儲(chǔ)過程名稱”下拉的清單中出現(xiàn)數(shù)據(jù)庫(kù)中的所有表名。選擇差不多情況表。 Adodc1控件的RecordSource屬性欄中出現(xiàn)student.mdb數(shù)據(jù)庫(kù)的差不多情況表。步驟10:將四個(gè)文本框控件和四個(gè)標(biāo)題控件放在窗體上。將它們的DataSource=Adodc1,DataField分不設(shè)置為學(xué)號(hào)、姓名、專業(yè)、出生年月。 Mystudent數(shù)據(jù)源差不多注

41、冊(cè)到系統(tǒng)上,不必再次生成。它會(huì)自動(dòng)出現(xiàn)在ADO數(shù)據(jù)控件屬性頁(yè)的“使用ODBC數(shù)據(jù)資源名稱”下拉清單中。 運(yùn)行結(jié)果如圖9.24。圖9.24 使用ADO數(shù)據(jù)控件及ODBC例9.14 ADO數(shù)據(jù)控件使用自己的高級(jí)約束數(shù)據(jù)控件,即DataList和DataCombo控件。本例要求在DataList控件中顯示學(xué)號(hào),要將DataList控件與ADO數(shù)據(jù)控件連接,使用戶每次選擇清單中的新學(xué)號(hào),窗體上的文本框中出現(xiàn)相應(yīng)的字段。要使用DataList和DataCombo控件,首先要將其加進(jìn)工具箱。步驟如下: 1選擇“工程|部件”菜單,打開“部件”對(duì)話框,選取“Microsoft DataList Control

42、s 6.0(OLEDB)”復(fù)選項(xiàng)。 2將DataList控件的實(shí)例放在窗體上。 3要用差不多情況表中的學(xué)號(hào)建立DataList控件,設(shè)置屬性RowSource= Adodc1,ListField=學(xué)號(hào)。 假如這時(shí)運(yùn)行應(yīng)用程序,則會(huì)自動(dòng)生成DataList控件,但清單中所選的學(xué)號(hào)對(duì)約束數(shù)據(jù)控件沒有阻礙。我們要加入一些代碼,在清單中每次選擇另一學(xué)號(hào)時(shí),移動(dòng)ADO數(shù)據(jù)控件,具體方法如下:Private Sub DataList1_Click() Adodc1.Recordset.Bookmark = DataList1.SelectedItemEnd Sub 每次單擊清單中的新項(xiàng)目時(shí),那個(gè)項(xiàng)目就成為

43、ADO數(shù)據(jù)控件的書簽。 大多數(shù)情況下,用于自動(dòng)建立DataList控件的數(shù)據(jù)通常沒有排序。假如DataList控件中學(xué)號(hào)沒有排序,就無法方便地找到清單中的項(xiàng)目。要使DataList控件中學(xué)號(hào)排序,按如下步驟修改ADO數(shù)據(jù)控件的RecordSource屬性: 1.設(shè)計(jì)圖9.25所示的窗體。 2.右鍵單擊Adodc1控件,并在屬性頁(yè)中將“ODBC 數(shù)據(jù)源名”設(shè)置為mystudent。 3切換到“記錄源” 標(biāo)簽,指定SQL 語(yǔ) 圖9.25 Adodc1控件句而不是表格:將“命令類型”設(shè)置為 adCmdUnknown,并在“命令文本”框中輸人下列SQL語(yǔ)句: select * from 差不多情況 o

44、rder by 學(xué)號(hào) 例9.15 用外接程序的數(shù)據(jù)窗體向?qū)?chuàng)建主細(xì)表(數(shù)據(jù)庫(kù)student.mdb中的主表是差不多情況表,細(xì)表是學(xué)生成績(jī)表)。步驟1:選擇 “外接程序”的“數(shù)據(jù)窗體向?qū)А辈藛危ㄈ绮藛沃袩o此選項(xiàng),可通過“外接程序”的“外接程序治理器”加載“VB 6 數(shù)據(jù)窗體向?qū)А保霈F(xiàn)“數(shù)據(jù)窗體向?qū)Ы榻B”窗口,選擇“無”,單擊下一步;步驟2: 在“數(shù)據(jù)窗體向?qū)?shù)據(jù)庫(kù)類型”窗口“選擇Remote(ODBC)”,單擊下一步;步驟3: 在“數(shù)據(jù)窗體向?qū)нB接信息”窗口,在DSN(數(shù)據(jù)源名)欄選擇已定義的數(shù)據(jù)源mystudent,單擊下一步;步驟4: 在“數(shù)據(jù)窗體向?qū)orm”窗口,在“窗體名稱為”文本框中輸入窗體名稱,本例輸入frm_jbqk;窗體布局選擇“主表/細(xì)表”,單擊下一步;步驟5: 在“數(shù)據(jù)窗體向?qū)е鞅碛涗浽础贝翱谶x擇主表及其字段,本例在“記錄源” 文本框選擇主表為“差不多情況”,在“可用字段”中選擇字段學(xué)號(hào)

溫馨提示

  • 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)論