visual basic 第14章 數(shù)據(jù)庫應(yīng)用基礎(chǔ)
《visual basic 第14章 數(shù)據(jù)庫應(yīng)用基礎(chǔ)》由會員分享,可在線閱讀,更多相關(guān)《visual basic 第14章 數(shù)據(jù)庫應(yīng)用基礎(chǔ)(127頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第第1414章章 數(shù)據(jù)庫應(yīng)用基礎(chǔ)數(shù)據(jù)庫應(yīng)用基礎(chǔ)w 14.1 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 w 14.2 VB如何訪問數(shù)據(jù)庫如何訪問數(shù)據(jù)庫 w 14.3 用控件訪問數(shù)據(jù)庫用控件訪問數(shù)據(jù)庫 w 14.4 初識記錄集對象初識記錄集對象w 14.5 用用SQL語句生成記錄集語句生成記錄集 w 14.6 數(shù)據(jù)庫記錄的操作數(shù)據(jù)庫記錄的操作w 14.7 ADO編程模型簡介編程模型簡介 w 14.8 數(shù)據(jù)報表數(shù)據(jù)報表 結(jié)束14.1 14.1 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 w 14.1.1 14.1.1 關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu) w 14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessA
2、ccess數(shù)據(jù)庫數(shù)據(jù)庫 w 14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫 返回首頁14.1.1 14.1.1 關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)(1)(1)在討論關(guān)系型數(shù)據(jù)庫的結(jié)構(gòu)之前,先來在討論關(guān)系型數(shù)據(jù)庫的結(jié)構(gòu)之前,先來看一個記載學(xué)生基本信息的表格。看一個記載學(xué)生基本信息的表格。表表14.1 學(xué)生基本信息表學(xué)生基本信息表 14.1.1 14.1.1 關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)(2)(2)表表14.1是一個由若干行和列組成的二維是一個由若干行和列組成的二維表格,一個關(guān)系型數(shù)據(jù)庫由多個這樣的二維表格,一個關(guān)系型數(shù)據(jù)庫由多個
3、這樣的二維表格組成。關(guān)系型數(shù)據(jù)庫使用以下術(shù)語描述表格組成。關(guān)系型數(shù)據(jù)庫使用以下術(shù)語描述數(shù)據(jù)庫中的信息:數(shù)據(jù)庫中的信息:記錄記錄(Record):):二維表中的每一行為一二維表中的每一行為一條記錄(表條記錄(表14.1中的第一行中的第一行“學(xué)號學(xué)號”、“姓姓名名”等列標(biāo)題除外)。一個表中不允許含有等列標(biāo)題除外)。一個表中不允許含有完全相同的兩條記錄。完全相同的兩條記錄。字段字段(Field):):二維表中的每一列為一二維表中的每一列為一個字段。列標(biāo)題為字段名(必須惟一)。個字段。列標(biāo)題為字段名(必須惟一)。14.1.1 14.1.1 關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)(3)(3)數(shù)據(jù)表
4、數(shù)據(jù)表(Table):):二維表中的所有記錄二維表中的所有記錄構(gòu)成數(shù)據(jù)表,簡稱為表。構(gòu)成數(shù)據(jù)表,簡稱為表。數(shù)據(jù)庫數(shù)據(jù)庫(Database):):多個相互關(guān)聯(lián)但多個相互關(guān)聯(lián)但不同名的數(shù)據(jù)表構(gòu)成數(shù)據(jù)庫。不同名的數(shù)據(jù)表構(gòu)成數(shù)據(jù)庫。目前較流行的桌面數(shù)據(jù)庫目前較流行的桌面數(shù)據(jù)庫MS Access,大大型網(wǎng)絡(luò)數(shù)據(jù)庫型網(wǎng)絡(luò)數(shù)據(jù)庫MS SQL Server、Oracle和和Sybase等都屬于關(guān)系型數(shù)據(jù)庫。本章以等都屬于關(guān)系型數(shù)據(jù)庫。本章以MS Access數(shù)據(jù)庫為例討論數(shù)據(jù)庫為例討論VB的數(shù)據(jù)庫應(yīng)用技的數(shù)據(jù)庫應(yīng)用技術(shù)。術(shù)。返回首頁返回本節(jié)14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建Acces
5、sAccess數(shù)據(jù)庫數(shù)據(jù)庫(1)(1)1.啟動數(shù)據(jù)管理器啟動數(shù)據(jù)管理器 在在VB環(huán)境中執(zhí)行【外接程序】菜單中的【可環(huán)境中執(zhí)行【外接程序】菜單中的【可視化數(shù)據(jù)管理器】命令,打開可視化數(shù)據(jù)管理器視化數(shù)據(jù)管理器】命令,打開可視化數(shù)據(jù)管理器(VisData),),如如圖圖14.1所示。所示。2.建立數(shù)據(jù)庫建立數(shù)據(jù)庫 在在VisDataVisData窗口執(zhí)行菜單命令【文件】窗口執(zhí)行菜單命令【文件】|【新建】【新建】|Microsoft Access Ver 7.0 MDBMicrosoft Access Ver 7.0 MDB,打開【選擇要打開【選擇要創(chuàng)建的創(chuàng)建的Microsoft AccessMicr
6、osoft Access數(shù)據(jù)庫】對話框,在對數(shù)據(jù)庫】對話框,在對話框中輸入數(shù)據(jù)庫文件名(如話框中輸入數(shù)據(jù)庫文件名(如“Student.mdbStudent.mdb”)并保存后,并保存后,VisDataVisData窗口的工作區(qū)將出現(xiàn)如窗口的工作區(qū)將出現(xiàn)如圖圖14.214.2所示的【數(shù)據(jù)庫窗口】(此時為空庫,無表)。所示的【數(shù)據(jù)庫窗口】(此時為空庫,無表)。14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(2)(2)圖圖14.1 可視化數(shù)據(jù)管理器可視化數(shù)據(jù)管理器 圖圖14.2 數(shù)據(jù)庫窗口數(shù)據(jù)庫窗口 返回14.1.2 14.1.2 在在VBVB環(huán)境中
7、創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(3)(3)3.建立數(shù)據(jù)表建立數(shù)據(jù)表 右擊【數(shù)據(jù)庫窗口】空白處,在彈出菜單中選右擊【數(shù)據(jù)庫窗口】空白處,在彈出菜單中選擇【新建表】菜單項,打開如擇【新建表】菜單項,打開如圖圖14.3所示的【表結(jié)所示的【表結(jié)構(gòu)】對話框,輸入表名稱(如構(gòu)】對話框,輸入表名稱(如“基本情況基本情況”)后,)后,單擊【添加字段】按鈕,打開單擊【添加字段】按鈕,打開如圖如圖14.4所示的【添所示的【添加字段】對話框,輸入字段名稱,設(shè)置類型和大加字段】對話框,輸入字段名稱,設(shè)置類型和大?。▋H小(僅Text類型可設(shè)置大?。?。添加了所有字段后,類型可設(shè)置大小)。添加了所有字段
8、后,單擊圖單擊圖14.3中的【生成表】按鈕即可建立數(shù)據(jù)表。中的【生成表】按鈕即可建立數(shù)據(jù)表。在一個庫中可建立多個不同名稱的表。在一個庫中可建立多個不同名稱的表。14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(4)(4)圖圖14.3 表結(jié)構(gòu)表結(jié)構(gòu)返回14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(5)(5)圖圖14.4 添加字段添加字段 返回14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(6)(6)4.添加索引添加索引 為數(shù)據(jù)表添加索引可以提高數(shù)據(jù)
9、檢索的速度。為數(shù)據(jù)表添加索引可以提高數(shù)據(jù)檢索的速度。在在圖圖14.314.3所示的【表結(jié)構(gòu)】對話框中單擊【添加所示的【表結(jié)構(gòu)】對話框中單擊【添加索引】按鈕,打開如索引】按鈕,打開如圖圖14.514.5所示的【添加索引所示的【添加索引 到到 基本情況】對話框。在【名稱】文本框中輸入索基本情況】對話框。在【名稱】文本框中輸入索引名稱(如引名稱(如“sNosNo”),),在【可用字段】列表框中在【可用字段】列表框中選擇需要為其設(shè)置索引的字段(如選擇需要為其設(shè)置索引的字段(如“學(xué)號學(xué)號”),),并設(shè)置是否為主索引或惟一索引(無重復(fù))。并設(shè)置是否為主索引或惟一索引(無重復(fù))。5.輸入記錄輸入記錄 雙擊【
10、數(shù)據(jù)庫窗口】中數(shù)據(jù)表名稱左側(cè)的圖標(biāo),雙擊【數(shù)據(jù)庫窗口】中數(shù)據(jù)表名稱左側(cè)的圖標(biāo),打開如打開如圖圖14.614.6所示的記錄操作窗口,可以對記錄所示的記錄操作窗口,可以對記錄進(jìn)行增、刪、修改等操作。進(jìn)行增、刪、修改等操作。14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(7)(7)圖圖14.5 添加索引添加索引 返回14.1.2 14.1.2 在在VBVB環(huán)境中創(chuàng)建環(huán)境中創(chuàng)建AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫(8)(8)圖圖14.6 記錄操作記錄操作 返回返回首頁返回本節(jié)14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫
11、建立數(shù)據(jù)庫(1 1)下面以下面以MS Access 2000為例簡介數(shù)據(jù)庫的創(chuàng)建。為例簡介數(shù)據(jù)庫的創(chuàng)建。1.1.建立數(shù)據(jù)庫建立數(shù)據(jù)庫 啟動啟動MS AccessMS Access,在對話框中選定【空在對話框中選定【空 Access Access 數(shù)據(jù)庫】單選按鈕。單擊【確定】按鈕后,在數(shù)據(jù)庫】單選按鈕。單擊【確定】按鈕后,在【文件新建數(shù)據(jù)庫】對話框中選擇保存位置并輸【文件新建數(shù)據(jù)庫】對話框中選擇保存位置并輸入文件名入文件名,然后單擊【創(chuàng)建】按鈕。然后單擊【創(chuàng)建】按鈕。2.2.建立數(shù)據(jù)表建立數(shù)據(jù)表 新建一個空白數(shù)據(jù)庫后,在新建一個空白數(shù)據(jù)庫后,在MS AccessMS Access主窗口主窗口中
12、將會出現(xiàn)如中將會出現(xiàn)如圖圖14.914.9所示的數(shù)據(jù)庫窗口。在此窗所示的數(shù)據(jù)庫窗口。在此窗口中可以管理口中可以管理AccessAccess數(shù)據(jù)庫的各組成部分。數(shù)據(jù)庫的各組成部分。14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(2 2)圖圖14.9 創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表 返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(3 3)在數(shù)據(jù)庫窗口中雙擊【使用設(shè)計器創(chuàng)建表】圖在數(shù)據(jù)庫窗口中雙擊【使用設(shè)計器創(chuàng)建表】圖標(biāo),打開如標(biāo),打開如圖圖14.1014.10所示的表設(shè)計器窗口【表所示的表設(shè)計器窗口【表1 1:表】,輸入
13、字段名稱,設(shè)置字段的數(shù)據(jù)類型、字表】,輸入字段名稱,設(shè)置字段的數(shù)據(jù)類型、字段大小及其他屬性。段大小及其他屬性。若需設(shè)置主鍵,可選定擬設(shè)為主鍵的字段,若需設(shè)置主鍵,可選定擬設(shè)為主鍵的字段,然后單擊然后單擊MS Access主窗口工具欄中的【主鍵】圖主窗口工具欄中的【主鍵】圖標(biāo)標(biāo) ,此時,被設(shè)為主鍵的字段名左側(cè)會出現(xiàn)鑰,此時,被設(shè)為主鍵的字段名左側(cè)會出現(xiàn)鑰匙狀的圖標(biāo),同時,【字段屬性】中的【索引】匙狀的圖標(biāo),同時,【字段屬性】中的【索引】屬性將自動設(shè)為【有屬性將自動設(shè)為【有(無重復(fù)無重復(fù))】?!俊H孔侄卧O(shè)置結(jié)束后,關(guān)閉表設(shè)計器窗口,全部字段設(shè)置結(jié)束后,關(guān)閉表設(shè)計器窗口,系統(tǒng)將顯示如系統(tǒng)將顯示如圖
14、圖14.11所示的對話框,可根據(jù)提示所示的對話框,可根據(jù)提示保存新建的數(shù)據(jù)表并設(shè)置表的名稱。保存新建的數(shù)據(jù)表并設(shè)置表的名稱。14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(4 4)圖圖14.10 設(shè)計表的結(jié)構(gòu)設(shè)計表的結(jié)構(gòu) 返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(5 5)圖圖14.11 保存數(shù)據(jù)表保存數(shù)據(jù)表 返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(6 6)若需修改數(shù)據(jù)表的結(jié)構(gòu)定義(如添加、刪除若需修改數(shù)據(jù)表的結(jié)構(gòu)定義(如添加、刪除或修改字段),可在
15、如圖或修改字段),可在如圖14.12所示的數(shù)據(jù)庫窗口所示的數(shù)據(jù)庫窗口選定數(shù)據(jù)表(如選定數(shù)據(jù)表(如“基本信息基本信息”),然后單擊該窗),然后單擊該窗口工具欄中的【設(shè)計】按鈕,打開前面口工具欄中的【設(shè)計】按鈕,打開前面圖圖14.10所所示的表設(shè)計器窗口進(jìn)行操作。示的表設(shè)計器窗口進(jìn)行操作。圖圖14.12 修改表結(jié)構(gòu)修改表結(jié)構(gòu) 14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(7 7)如果要添加一個新表,可再次雙擊【使用設(shè)計如果要添加一個新表,可再次雙擊【使用設(shè)計器創(chuàng)建表】圖標(biāo),或者單擊工具欄【新建】按鈕,器創(chuàng)建表】圖標(biāo),或者單擊工具欄【新建】按鈕,在如圖在如
16、圖14.13所示的【新建表】對話框中選擇【設(shè)所示的【新建表】對話框中選擇【設(shè)計視圖】后,單擊【確定】按鈕,均可打開如計視圖】后,單擊【確定】按鈕,均可打開如圖圖14.10所示的表設(shè)計器窗口。所示的表設(shè)計器窗口。圖圖14.13 添加新表添加新表 14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(8 8)3.輸入記錄輸入記錄 在數(shù)據(jù)庫窗口中雙擊數(shù)據(jù)表在數(shù)據(jù)庫窗口中雙擊數(shù)據(jù)表,或者選定表后單擊工具欄或者選定表后單擊工具欄中的【打開】按鈕中的【打開】按鈕,打開如圖打開如圖14.14所示的數(shù)據(jù)表窗口所示的數(shù)據(jù)表窗口,向表向表中輸入數(shù)據(jù)。輸入結(jié)束后關(guān)閉該窗口,根據(jù)系
17、統(tǒng)提示保存中輸入數(shù)據(jù)。輸入結(jié)束后關(guān)閉該窗口,根據(jù)系統(tǒng)提示保存數(shù)據(jù)表。數(shù)據(jù)表。圖圖14.14 輸入記錄輸入記錄 14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(9 9)4.建立表間關(guān)聯(lián)關(guān)系建立表間關(guān)聯(lián)關(guān)系 在一個數(shù)據(jù)庫中,一般需要用多個表存放不同在一個數(shù)據(jù)庫中,一般需要用多個表存放不同類別而又相互關(guān)聯(lián)的信息。例如,在學(xué)生信息數(shù)類別而又相互關(guān)聯(lián)的信息。例如,在學(xué)生信息數(shù)據(jù)庫中用據(jù)庫中用“基本信息基本信息”表存放學(xué)生的學(xué)號、姓名、表存放學(xué)生的學(xué)號、姓名、性別等基本情況,用性別等基本情況,用“成績成績”表存放學(xué)生的各科表存放學(xué)生的各科成績,用成績,用“課程課程
18、”表存放已開的課程。假設(shè)這三表存放已開的課程。假設(shè)這三個表中含有如個表中含有如表表14.314.3表表14.514.5所示的信息,當(dāng)需所示的信息,當(dāng)需要查詢某位學(xué)生的一門或幾門課程的成績時,就要查詢某位學(xué)生的一門或幾門課程的成績時,就要從上述三個表中獲取數(shù)據(jù)。假如某位學(xué)生的學(xué)要從上述三個表中獲取數(shù)據(jù)。假如某位學(xué)生的學(xué)號在最初輸入時有誤,需要修改,則必須確保號在最初輸入時有誤,需要修改,則必須確保“基本信息基本信息”表和表和“成績成績”表中的表中的“學(xué)號學(xué)號”字段字段進(jìn)行同步更改。因此,應(yīng)當(dāng)為三個表建立必要的進(jìn)行同步更改。因此,應(yīng)當(dāng)為三個表建立必要的關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系。14.1.3 14.1.3
19、 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1010)注:注:*為主鍵。為主鍵。返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1111)建立表間關(guān)聯(lián)關(guān)系的前提是兩個表各含有一個關(guān)聯(lián)字段建立表間關(guān)聯(lián)關(guān)系的前提是兩個表各含有一個關(guān)聯(lián)字段(屬性必須相同),其中一個表的關(guān)聯(lián)字段必須被設(shè)為主(屬性必須相同),其中一個表的關(guān)聯(lián)字段必須被設(shè)為主鍵或具有惟一索引,該表稱為鍵或具有惟一索引,該表稱為“主表主表”,另一個表稱為,另一個表稱為“從表從表”。下面以表下面以表14.3表表14.5為例,簡介建立數(shù)據(jù)表為例,簡介建立數(shù)據(jù)表之間關(guān)聯(lián)關(guān)系的一般
20、步驟。之間關(guān)聯(lián)關(guān)系的一般步驟。單擊單擊Microsoft Access主窗口工具欄【關(guān)系】按鈕主窗口工具欄【關(guān)系】按鈕 ,若數(shù)據(jù)庫中尚未定義任何關(guān)系,則在打開【關(guān)系】窗口的若數(shù)據(jù)庫中尚未定義任何關(guān)系,則在打開【關(guān)系】窗口的同時彈出如同時彈出如圖圖14.1514.15所示的【顯示表】對話框。所示的【顯示表】對話框。在【顯示表】對話框中選定需要建立關(guān)系的表,單擊在【顯示表】對話框中選定需要建立關(guān)系的表,單擊【添加】按鈕,然后單擊【關(guān)閉】按鈕,屏幕顯示如【添加】按鈕,然后單擊【關(guān)閉】按鈕,屏幕顯示如圖圖14.1614.16所示的【關(guān)系】窗口所示的【關(guān)系】窗口。14.1.3 14.1.3 用用MS A
21、ccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1212)圖圖14.15 選擇擬建立關(guān)系的表選擇擬建立關(guān)系的表 返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1313)圖圖14.16 【關(guān)系】窗口【關(guān)系】窗口 返回14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1414)在【關(guān)系】窗口將【基本信息】表中的【學(xué)號】在【關(guān)系】窗口將【基本信息】表中的【學(xué)號】字段拖放到【成績】表中的【學(xué)號】字段,彈出字段拖放到【成績】表中的【學(xué)號】字段,彈出如圖如圖14.17所示的【編輯關(guān)系】對話框。所示的【編輯關(guān)系】對話框
22、。圖圖14.17 編輯關(guān)系編輯關(guān)系 14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1515)在【編輯關(guān)系】對話框中,將【實施參照完整在【編輯關(guān)系】對話框中,將【實施參照完整性】、【級聯(lián)更新相關(guān)字段】和【級聯(lián)刪除相關(guān)性】、【級聯(lián)更新相關(guān)字段】和【級聯(lián)刪除相關(guān)記錄】三個復(fù)選框全部選中,單擊【創(chuàng)建】按鈕。記錄】三個復(fù)選框全部選中,單擊【創(chuàng)建】按鈕。重復(fù)第、步的操作,建立【成績】表中的重復(fù)第、步的操作,建立【成績】表中的【課號】字段與【課程】表中的【課號】字段的【課號】字段與【課程】表中的【課號】字段的關(guān)聯(lián)。關(guān)聯(lián)。建立表間關(guān)聯(lián)關(guān)系后的效果如建立表間關(guān)聯(lián)關(guān)系后
23、的效果如圖圖14.18所示。所示。14.1.3 14.1.3 用用MS AccessMS Access建立數(shù)據(jù)庫建立數(shù)據(jù)庫(1616)圖圖14.18 表間關(guān)系表間關(guān)系 返回首頁返回本節(jié)14.2 14.2 VBVB如何訪問數(shù)據(jù)庫(如何訪問數(shù)據(jù)庫(1 1)目前,目前,Visual BasicVisual Basic訪問數(shù)據(jù)庫的主流技術(shù)是訪問數(shù)據(jù)庫的主流技術(shù)是ADOADO。ADOADO是一種基于對象的數(shù)據(jù)訪問接口,在是一種基于對象的數(shù)據(jù)訪問接口,在VBVB中中提供了利用提供了利用ADOADO訪問數(shù)據(jù)庫的兩種主要形式:訪問數(shù)據(jù)庫的兩種主要形式:ADOADO數(shù)數(shù)據(jù)控件據(jù)控件(ADODCADODC)和和A
24、DOADO對象編程模型對象編程模型(ADOADO代碼代碼)。這兩種方式可以單獨使用,也可以同時使用。這兩種方式可以單獨使用,也可以同時使用。使用使用ADOADO數(shù)據(jù)控件的優(yōu)點是代碼少,一個簡單的數(shù)據(jù)控件的優(yōu)點是代碼少,一個簡單的數(shù)據(jù)庫應(yīng)用程序甚至可以不用編寫任何代碼。它的數(shù)據(jù)庫應(yīng)用程序甚至可以不用編寫任何代碼。它的缺點是功能簡單,不夠靈活,不能滿足編制較復(fù)雜缺點是功能簡單,不夠靈活,不能滿足編制較復(fù)雜的數(shù)據(jù)庫應(yīng)用程序的需要。的數(shù)據(jù)庫應(yīng)用程序的需要。14.2 14.2 VBVB如何訪問數(shù)據(jù)庫(如何訪問數(shù)據(jù)庫(2 2)使用使用ADOADO對象編程模型的優(yōu)點是具有高度的靈活性,可以對象編程模型的優(yōu)點
25、是具有高度的靈活性,可以編制復(fù)雜的數(shù)據(jù)庫應(yīng)用程序。它的缺點是代碼編寫量較大,編制復(fù)雜的數(shù)據(jù)庫應(yīng)用程序。它的缺點是代碼編寫量較大,對初學(xué)者來說有一定困難。對初學(xué)者來說有一定困難。無論采用哪種方式訪問數(shù)據(jù)庫,都要經(jīng)歷以下基本步驟:無論采用哪種方式訪問數(shù)據(jù)庫,都要經(jīng)歷以下基本步驟:w 與數(shù)據(jù)庫建立連接,打開數(shù)據(jù)庫。與數(shù)據(jù)庫建立連接,打開數(shù)據(jù)庫。w 從數(shù)據(jù)庫中讀取數(shù)據(jù)并在適當(dāng)?shù)目丶酗@示。從數(shù)據(jù)庫中讀取數(shù)據(jù)并在適當(dāng)?shù)目丶酗@示。w 對所獲數(shù)據(jù)進(jìn)行瀏覽以及增、刪、改等操作,并將修改對所獲數(shù)據(jù)進(jìn)行瀏覽以及增、刪、改等操作,并將修改后的數(shù)據(jù)存入數(shù)據(jù)庫。后的數(shù)據(jù)存入數(shù)據(jù)庫。在后面的幾節(jié)中將以在后面的幾節(jié)中將以
26、ADOADO數(shù)據(jù)控件為主詳細(xì)介紹數(shù)據(jù)控件為主詳細(xì)介紹VBVB訪問數(shù)訪問數(shù)據(jù)庫的基本操作。據(jù)庫的基本操作。返回首頁14.3 14.3 用控件訪問數(shù)據(jù)庫用控件訪問數(shù)據(jù)庫w 14.3.1 14.3.1 ADOADO數(shù)據(jù)控件數(shù)據(jù)控件 w 14.3.2 14.3.2 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 w 14.3.3 14.3.3 使用數(shù)據(jù)窗體向?qū)褂脭?shù)據(jù)窗體向?qū)?返回首頁14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(1 1)1.1.加載加載ADOADO數(shù)據(jù)控件數(shù)據(jù)控件 ADO ADO數(shù)據(jù)控件屬于數(shù)據(jù)控件屬于ActiveXActiveX控件,加載后才能使用:控件,加載后才能使用:右擊工具箱,在彈出
27、菜單中選擇【部件】菜單項,打開右擊工具箱,在彈出菜單中選擇【部件】菜單項,打開【部 件】對 話 框,在【控 件】選 項 卡 的 列 表 中 選 中【部 件】對 話 框,在【控 件】選 項 卡 的 列 表 中 選 中“Mcrosoft ADO Data Control 6.0Mcrosoft ADO Data Control 6.0”前面的復(fù)選框,單擊前面的復(fù)選框,單擊【確定】按鈕?!敬_定】按鈕。2.2.連接數(shù)據(jù)庫及指定記錄源連接數(shù)據(jù)庫及指定記錄源 ADO ADO數(shù)據(jù)控件與數(shù)據(jù)庫的連接有數(shù)據(jù)控件與數(shù)據(jù)庫的連接有3 3種方式:數(shù)據(jù)鏈接文件種方式:數(shù)據(jù)鏈接文件(.(.UDL)UDL)、ODBCODB
28、C(DSNDSN)和字符串連接。與和字符串連接。與AccessAccess數(shù)據(jù)庫建立數(shù)據(jù)庫建立連接的常用方式是連接的常用方式是字符串連接字符串連接。14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(2 2)通常通過屬性頁一次完成連接數(shù)據(jù)庫和指定記錄通常通過屬性頁一次完成連接數(shù)據(jù)庫和指定記錄源的設(shè)置。操作步驟如下:源的設(shè)置。操作步驟如下:將將ADOADO數(shù)據(jù)控件數(shù)據(jù)控件(Adodc)Adodc)添加到窗體上,右擊該添加到窗體上,右擊該控件,在彈出菜單中選擇【控件,在彈出菜單中選擇【ADODCADODC屬性】菜單項,屬性】菜單項,打開如打開如圖圖14.2014.20所示的【屬性頁】對話框
29、所示的【屬性頁】對話框。在對話框【通用】選項卡中選擇【使用連接字符在對話框【通用】選項卡中選擇【使用連接字符串】,單擊【生成】按鈕,打開如串】,單擊【生成】按鈕,打開如圖圖14.2114.21所示的所示的【數(shù)據(jù)鏈接屬性】對話框【數(shù)據(jù)鏈接屬性】對話框。在【提供程序】選項卡。在【提供程序】選項卡的列表中選擇的列表中選擇“Microsoft Jet 4.0 OLE DB Microsoft Jet 4.0 OLE DB ProviderProvider”,單擊【下一步】,切換到如單擊【下一步】,切換到如圖圖14.2214.22所示的【連接】選項卡所示的【連接】選項卡。14.3.1 14.3.1 AD
30、OADO數(shù)據(jù)控件(數(shù)據(jù)控件(3 3)圖圖14.20 14.20 ADODCADODC屬性頁屬性頁 返回14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(4 4)圖圖14.21 14.21 選擇提供程序選擇提供程序返回14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(5 5)圖圖14.22 14.22 連接數(shù)據(jù)庫連接數(shù)據(jù)庫返回14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(6 6)在【連接】選項卡中單擊【在【連接】選項卡中單擊【1.1.選擇或輸入數(shù)據(jù)庫名稱】選擇或輸入數(shù)據(jù)庫名稱】輸入框右側(cè)的輸入框右側(cè)的 按鈕,在彈出的【連接按鈕,在彈出的【連接 Access Ac
31、cess 數(shù)據(jù)庫】數(shù)據(jù)庫】對話框中選擇數(shù)據(jù)庫,單擊【打開】按鈕后返回【連接】選對話框中選擇數(shù)據(jù)庫,單擊【打開】按鈕后返回【連接】選項卡,單擊【測試連接】按鈕,成功后單擊【確定】,完成項卡,單擊【測試連接】按鈕,成功后單擊【確定】,完成連接數(shù)據(jù)庫的設(shè)置,返回【屬性頁】對話框。連接數(shù)據(jù)庫的設(shè)置,返回【屬性頁】對話框。單擊【屬性頁】對話框【記錄源】選項卡單擊【屬性頁】對話框【記錄源】選項卡,顯示如顯示如圖圖14.2314.23所示的界面所示的界面,在【記錄源】選項卡中設(shè)【命令類型】為在【記錄源】選項卡中設(shè)【命令類型】為“2-2-adCmdTableadCmdTable”,”,然后在【表或存儲過程名稱
32、】下拉列表然后在【表或存儲過程名稱】下拉列表中選擇數(shù)據(jù)表。也可以設(shè)【命令類型】為中選擇數(shù)據(jù)表。也可以設(shè)【命令類型】為“1-1-adCmdTextadCmdText”或或“8-8-adCmdUnknownadCmdUnknown”,”,然后在【命令文本然后在【命令文本(SQL)SQL)】文本框中文本框中輸入輸入SQLSQL語句語句(如如圖圖14.2414.24所示所示)。最后單擊【確定】按鈕完成。最后單擊【確定】按鈕完成設(shè)置。設(shè)置。14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(7 7)圖圖14.23 14.23 用數(shù)據(jù)表作記錄源用數(shù)據(jù)表作記錄源返回14.3.1 14.3.1 ADO
33、ADO數(shù)據(jù)控件(數(shù)據(jù)控件(8 8)圖圖14.24 14.24 用用SQLSQL語句作記錄源語句作記錄源返回14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(9 9)上述操作實際上是設(shè)置了上述操作實際上是設(shè)置了ADOADO數(shù)據(jù)控件的兩個重數(shù)據(jù)控件的兩個重要屬性:要屬性:ConnectionStringConnectionString(連接字符串)屬性用于建立連接字符串)屬性用于建立與數(shù)據(jù)庫的連接。與數(shù)據(jù)庫的連接。RecordSourceRecordSource(記錄源)屬性用于指定記錄源。記錄源)屬性用于指定記錄源。除了使用屬性頁之外,也可以通過屬性窗口或程除了使用屬性頁之外,也可以通
34、過屬性窗口或程序代碼設(shè)置這兩個屬性。序代碼設(shè)置這兩個屬性。在設(shè)置在設(shè)置ADOADO數(shù)據(jù)控件與數(shù)據(jù)庫的連接時,有一點數(shù)據(jù)控件與數(shù)據(jù)庫的連接時,有一點要提請讀者注意要提請讀者注意:14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(1010)如圖如圖14.2214.22所示所示,在【數(shù)據(jù)鏈接屬性】窗口的【連接】,在【數(shù)據(jù)鏈接屬性】窗口的【連接】選項卡中指定數(shù)據(jù)庫時采用的是絕對路徑。為了保證數(shù)據(jù)庫選項卡中指定數(shù)據(jù)庫時采用的是絕對路徑。為了保證數(shù)據(jù)庫應(yīng)用程序移植到其它計算機上仍可正常使用,應(yīng)當(dāng)采用相對應(yīng)用程序移植到其它計算機上仍可正常使用,應(yīng)當(dāng)采用相對路徑,即在測試連接成功后刪除數(shù)據(jù)庫名稱前面
35、的所有路徑路徑,即在測試連接成功后刪除數(shù)據(jù)庫名稱前面的所有路徑(圖圖14.2214.22輸入框中的反相顯示部分輸入框中的反相顯示部分),僅保留數(shù)據(jù)庫文件名。,僅保留數(shù)據(jù)庫文件名。將數(shù)據(jù)庫文件與工程文件存放在同一文件夾下,在工程啟動將數(shù)據(jù)庫文件與工程文件存放在同一文件夾下,在工程啟動窗體的窗體的InitializeInitialize事件過程中進(jìn)行路徑初始化處理:事件過程中進(jìn)行路徑初始化處理:Private Sub Form_Initialize()ChDrive App.Path 設(shè)當(dāng)前驅(qū)動器為工程所在驅(qū)動器設(shè)當(dāng)前驅(qū)動器為工程所在驅(qū)動器 ChDir App.Path 設(shè)當(dāng)前目錄為工程所在目錄設(shè)
36、當(dāng)前目錄為工程所在目錄End Sub14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(1111)3.3.用代碼設(shè)置或改變記錄源用代碼設(shè)置或改變記錄源 ADO ADO數(shù)據(jù)控件一旦建立了與數(shù)據(jù)庫的連接,就可以通過設(shè)數(shù)據(jù)控件一旦建立了與數(shù)據(jù)庫的連接,就可以通過設(shè)置或改變其置或改變其RecordSourceRecordSource(記錄源)屬性訪問數(shù)據(jù)庫中的任記錄源)屬性訪問數(shù)據(jù)庫中的任何表,亦可訪問由一個或多個表中的部分或全部數(shù)據(jù)構(gòu)成的何表,亦可訪問由一個或多個表中的部分或全部數(shù)據(jù)構(gòu)成的記錄集。在實際應(yīng)用中,常常在程序運行時用代碼設(shè)置記錄集。在實際應(yīng)用中,常常在程序運行時用代碼設(shè)置Reco
37、rdSourceRecordSource屬性及其相關(guān)屬性(如屬性及其相關(guān)屬性(如CommandTypeCommandType),),從而從而使使ADOADO數(shù)據(jù)控件具有更大的靈活性。例如:數(shù)據(jù)控件具有更大的靈活性。例如:用數(shù)據(jù)表名稱作為記錄源:用數(shù)據(jù)表名稱作為記錄源:Adodc1.CommandType=adCmdTable 設(shè)置命令類型為數(shù)據(jù)表設(shè)置命令類型為數(shù)據(jù)表Adodc1.RecordSource=基本信息基本信息Adodc1.Refresh14.3.1 14.3.1 ADOADO數(shù)據(jù)控件(數(shù)據(jù)控件(1212)用用SQLSQL語句生成的記錄集作為記錄源:語句生成的記錄集作為記錄源:Ado
38、dc1.CommandType=adCmdText 設(shè)置命令類型為設(shè)置命令類型為SQL語句語句Adodc1.RecordSource=SELECT*FROM 基本信息基本信息Adodc1.Refresh 上述兩段代碼的效果相同。有關(guān)上述兩段代碼的效果相同。有關(guān)SQLSQL語言的應(yīng)用語言的應(yīng)用將在將在14.514.5節(jié)介紹。節(jié)介紹。注意:設(shè)置記錄源后,必須調(diào)用注意:設(shè)置記錄源后,必須調(diào)用ADOADO數(shù)據(jù)控件的數(shù)據(jù)控件的RefreshRefresh方法刷新對數(shù)據(jù)庫的訪問。方法刷新對數(shù)據(jù)庫的訪問。返回首頁返回本節(jié)14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(1 1)ADO ADO數(shù)據(jù)控件本
39、身不能顯示數(shù)據(jù),需通過綁定具數(shù)據(jù)控件本身不能顯示數(shù)據(jù),需通過綁定具有顯示功能的其他控件顯示數(shù)據(jù),這些控件稱為數(shù)有顯示功能的其他控件顯示數(shù)據(jù),這些控件稱為數(shù)據(jù)綁定控件或數(shù)據(jù)識別據(jù)綁定控件或數(shù)據(jù)識別(感知感知)控件,如文本框、控件,如文本框、DataGridDataGrid、標(biāo)簽、圖像標(biāo)簽、圖像(片片)框、列表框、組合框、框、列表框、組合框、復(fù)選框等。其中最常用的是復(fù)選框等。其中最常用的是DataGridDataGrid和和文本框文本框。1.1.數(shù)據(jù)綁定控件的相關(guān)屬性數(shù)據(jù)綁定控件的相關(guān)屬性 DataSourceDataSource(數(shù)據(jù)源)屬性:指定(綁定到)數(shù)據(jù)源)屬性:指定(綁定到)ADOAD
40、O數(shù)據(jù)控件。數(shù)據(jù)控件。DataFieldDataField(數(shù)據(jù)字段)屬性:綁定到特定字段。數(shù)據(jù)字段)屬性:綁定到特定字段。綁定后只要移動指針綁定后只要移動指針,自動將修改內(nèi)容寫入數(shù)據(jù)庫。自動將修改內(nèi)容寫入數(shù)據(jù)庫。14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(2 2)2.2.在屬性窗口設(shè)置綁定控件屬性在屬性窗口設(shè)置綁定控件屬性 在屬性窗口將數(shù)據(jù)綁定控件的在屬性窗口將數(shù)據(jù)綁定控件的DataSourceDataSource屬性設(shè)屬性設(shè)為為ADOADO數(shù)據(jù)控件(如數(shù)據(jù)控件(如Adodc1Adodc1)。)。如果是單字段顯示如果是單字段顯示控件(如文本框等),還需將控件的控件(如文本框等),
41、還需將控件的DataFieldDataField屬屬性設(shè)置為特定字段。性設(shè)置為特定字段。DataGridDataGrid控件屬于多字段顯示控件屬于多字段顯示控件,沒有控件,沒有DataFieldDataField屬性。屬性?!纠纠?4.114.1】用】用ADOADO數(shù)據(jù)控件和數(shù)據(jù)控件和DataGridDataGrid控件創(chuàng)建一控件創(chuàng)建一個簡單的數(shù)據(jù)訪問窗體,顯示個簡單的數(shù)據(jù)訪問窗體,顯示14.1.314.1.3節(jié)創(chuàng)建的節(jié)創(chuàng)建的Student2K.mdbStudent2K.mdb數(shù)據(jù)庫中數(shù)據(jù)庫中“基本信息基本信息”表的內(nèi)容。表的內(nèi)容。14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(3
42、3)右擊工具箱,在彈出菜單中選擇【部件】命令,右擊工具箱,在彈出菜單中選擇【部件】命令,在 對 話 框【控 件】選 項 卡 的 列 表 中 選 中在 對 話 框【控 件】選 項 卡 的 列 表 中 選 中“Microsoft ADO Data Control 6.0Microsoft ADO Data Control 6.0”和和“Microsoft DataGrid 6.0Microsoft DataGrid 6.0”,單擊【確定】。選單擊【確定】。選擇工具箱中新增加的擇工具箱中新增加的ADOADO數(shù)據(jù)控件和數(shù)據(jù)控件和DataGridDataGrid控件控件 ,將其添加到窗體上,默認(rèn)名稱分別
43、為將其添加到窗體上,默認(rèn)名稱分別為Adodc1Adodc1和和DataGrid1DataGrid1。按按14.3.114.3.1小節(jié)所述步驟建立小節(jié)所述步驟建立Adodc1Adodc1與與Student2K.mdbStudent2K.mdb數(shù)據(jù)庫的連接,并設(shè)數(shù)據(jù)庫的連接,并設(shè)Adodc1Adodc1的記錄的記錄源為源為“基本信息基本信息”表。將表。將DataGrid1DataGrid1控件的控件的DataSourceDataSource屬性設(shè)為屬性設(shè)為Adodc1Adodc1。程序運行效果如圖程序運行效果如圖14.2514.25所示。所示。14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件
44、(4 4)圖圖14.25 14.25 使用使用DataGridDataGrid控件控件14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(5 5)3.3.用代碼設(shè)置綁定控件屬性用代碼設(shè)置綁定控件屬性 程序運行時可以動態(tài)地設(shè)置數(shù)據(jù)綁定控件的屬性。程序運行時可以動態(tài)地設(shè)置數(shù)據(jù)綁定控件的屬性。例如:例如:Set Text1.DataSource=Adodc1Text1.DataField=姓名姓名Set DataGrid1.DataSource=Adodc1 說明:說明:DataSourceDataSource是對象類型的屬性,必須用是對象類型的屬性,必須用SetSet語句為其賦值。語句為其賦值
45、。14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(6 6)4.4.不用綁定方法如何顯示和處理數(shù)據(jù)不用綁定方法如何顯示和處理數(shù)據(jù) 不使用綁定的方法處理數(shù)據(jù)是指不對數(shù)據(jù)顯示控不使用綁定的方法處理數(shù)據(jù)是指不對數(shù)據(jù)顯示控件的件的DataSourceDataSource和和DataFieldDataField屬性進(jìn)行設(shè)置,而是屬性進(jìn)行設(shè)置,而是通過代碼將當(dāng)前記錄某個字段的值顯示在控件(如通過代碼將當(dāng)前記錄某個字段的值顯示在控件(如文本框)中。這種方法比較靈活,缺點是代碼編寫文本框)中。這種方法比較靈活,缺點是代碼編寫量較大,其中涉及到記錄集對象的操作。量較大,其中涉及到記錄集對象的操作。(1 1
46、)字段內(nèi)容的顯示)字段內(nèi)容的顯示控件屬性控件屬性=記錄集記錄集(“字段字段”)例如:例如:Text1.Text=Adodc1.Recordset(學(xué)號學(xué)號)Text2.Text=Adodc1.Recordset(姓名姓名)14.3.2 14.3.2 數(shù)據(jù)綁定控件(數(shù)據(jù)綁定控件(7 7)每當(dāng)記錄指針移動時均需對控件屬性重新賦值。若需要顯每當(dāng)記錄指針移動時均需對控件屬性重新賦值。若需要顯示的字段較多,可以編制一個自定義過程用于記錄指針移動示的字段較多,可以編制一個自定義過程用于記錄指針移動時顯示各字段內(nèi)容。時顯示各字段內(nèi)容。(2 2)為字段賦值)為字段賦值記錄集記錄集(“字段字段”)=)=控件屬性
47、控件屬性例如:例如:Adodc1.Recordset(學(xué)號學(xué)號)=Text1.TextAdodc1.Recordset(姓名姓名)=Text2.TextAdodc1.Recordset.Update 說明:為字段賦值后,應(yīng)調(diào)用記錄集的說明:為字段賦值后,應(yīng)調(diào)用記錄集的UpdateUpdate方法更新數(shù)方法更新數(shù)據(jù)庫。據(jù)庫。返回首頁返回本節(jié)14.3.3 14.3.3 使用數(shù)據(jù)窗體向?qū)Вㄊ褂脭?shù)據(jù)窗體向?qū)В? 1)使用使用“數(shù)據(jù)窗體向?qū)?shù)據(jù)窗體向?qū)А笨梢钥焖賱?chuàng)建一個數(shù)據(jù)訪問窗體??梢钥焖賱?chuàng)建一個數(shù)據(jù)訪問窗體。執(zhí)行【工程】菜單中【添加窗體】命令執(zhí)行【工程】菜單中【添加窗體】命令,打開如打開如圖圖14.
48、2614.26所所示的對話框,在【新建】選項卡中選擇【示的對話框,在【新建】選項卡中選擇【VBVB數(shù)據(jù)窗體向?qū)А浚瑪?shù)據(jù)窗體向?qū)А?,單擊【打開】按鈕后將會出現(xiàn)向?qū)У牡谝粋€對話框。單擊【打開】按鈕后將會出現(xiàn)向?qū)У牡谝粋€對話框。如果是創(chuàng)建單表訪問窗體,數(shù)據(jù)窗體向?qū)⒂衅邆€步驟:如果是創(chuàng)建單表訪問窗體,數(shù)據(jù)窗體向?qū)⒂衅邆€步驟:【介紹】、【數(shù)據(jù)庫類型】、【數(shù)據(jù)庫】、【窗體【介紹】、【數(shù)據(jù)庫類型】、【數(shù)據(jù)庫】、【窗體(FormForm)】、【)】、【記錄源】、【控件選擇】和【完成】,可根記錄源】、【控件選擇】和【完成】,可根據(jù)向?qū)崾静僮?。?jù)向?qū)崾静僮鳌D圖14.2714.27是利用數(shù)據(jù)窗體向?qū)?chuàng)建的
49、數(shù)據(jù)窗體,數(shù)據(jù)庫為是利用數(shù)據(jù)窗體向?qū)?chuàng)建的數(shù)據(jù)窗體,數(shù)據(jù)庫為Student2K.mdbStudent2K.mdb,記錄源為記錄源為“基本信息基本信息”表中的所有字段。表中的所有字段。向?qū)е械钠渌襟E均采用默認(rèn)設(shè)置。向?qū)е械钠渌襟E均采用默認(rèn)設(shè)置。14.3.3 14.3.3 使用數(shù)據(jù)窗體向?qū)Вㄊ褂脭?shù)據(jù)窗體向?qū)В? 2)圖圖14.26 14.26 啟動數(shù)據(jù)窗體向?qū)訑?shù)據(jù)窗體向?qū)Х祷?4.3.3 14.3.3 使用數(shù)據(jù)窗體向?qū)Вㄊ褂脭?shù)據(jù)窗體向?qū)В? 3)圖圖14.27 14.27 用數(shù)據(jù)窗體向?qū)?chuàng)建的數(shù)據(jù)窗體用數(shù)據(jù)窗體向?qū)?chuàng)建的數(shù)據(jù)窗體返回返回首頁返回本節(jié)14.4 14.4 初識記錄集對象(初識記
50、錄集對象(1 1)無論是使用無論是使用ADOADO數(shù)據(jù)控件數(shù)據(jù)控件,還是使用還是使用ADOADO對象編程對象編程模型,都會涉及到記錄集對象。因此模型,都會涉及到記錄集對象。因此,在進(jìn)一步討在進(jìn)一步討論數(shù)據(jù)庫操作之前論數(shù)據(jù)庫操作之前,有必要初步了解一下記錄集對有必要初步了解一下記錄集對象。象。請看下面來自學(xué)生數(shù)據(jù)庫的幾個集合:請看下面來自學(xué)生數(shù)據(jù)庫的幾個集合:取取“基本信息基本信息”表中所有學(xué)生的記錄構(gòu)成一個集表中所有學(xué)生的記錄構(gòu)成一個集合;合;取取“基本信息基本信息”表中所有男生的記錄構(gòu)成一個集表中所有男生的記錄構(gòu)成一個集合;合;取取“基本信息基本信息”表中張三的學(xué)號和姓名,根據(jù)其表中張三的學(xué)
51、號和姓名,根據(jù)其學(xué)號取學(xué)號取“成績成績”表(含學(xué)號、課號和分?jǐn)?shù)三個字段)表(含學(xué)號、課號和分?jǐn)?shù)三個字段)中該學(xué)生的各科成績構(gòu)成一個集合。中該學(xué)生的各科成績構(gòu)成一個集合。14.4 14.4 初識記錄集對象(初識記錄集對象(2 2)以上幾個集合都是以上幾個集合都是“記錄的集合記錄的集合”,由此得出以下概念:,由此得出以下概念:將數(shù)據(jù)庫中一個或多個表中的部分或全部數(shù)據(jù)構(gòu)成一個將數(shù)據(jù)庫中一個或多個表中的部分或全部數(shù)據(jù)構(gòu)成一個“記 錄 的 集 合記 錄 的 集 合”,這 個 集 合 就 稱 為,這 個 集 合 就 稱 為“記 錄 集記 錄 集”(RecordsetRecordset)。)。記錄集由行(記
52、錄)和列(字段)構(gòu)成。記錄集由行(記錄)和列(字段)構(gòu)成。若將記錄集看作一個對象,這個對象就是記錄集對象。記若將記錄集看作一個對象,這個對象就是記錄集對象。記錄集對象具有特定的屬性、方法和事件。錄集對象具有特定的屬性、方法和事件。ADO ADO數(shù)據(jù)控件的數(shù)據(jù)控件的RecordsetRecordset屬性代表屬于本控件的記錄集屬性代表屬于本控件的記錄集對象。對象。記錄集對象是記錄集對象是ADOADO中的一個功能強大的對象,對數(shù)據(jù)庫的中的一個功能強大的對象,對數(shù)據(jù)庫的絕大部分操作,如記錄指針的移動,記錄的查找、添加、絕大部分操作,如記錄指針的移動,記錄的查找、添加、刪除和修改等,都是針對記錄集對象
53、進(jìn)行的。刪除和修改等,都是針對記錄集對象進(jìn)行的。返回首頁14.5 14.5 用用SQLSQL語句生成記錄集語句生成記錄集w 14.5.1 14.5.1 最簡單的最簡單的SQLSQL語句語句 w 14.5.2 14.5.2 限定記錄集篩選條件限定記錄集篩選條件 w 14.5.3 14.5.3 在在VBVB程序中如何使用程序中如何使用SQLSQL語句語句 w 14.5.4 14.5.4 記錄排序記錄排序 w 14.5.5 14.5.5 記錄分組記錄分組 w 14.5.6 14.5.6 過濾重復(fù)記錄過濾重復(fù)記錄 返回首頁14.5.1 14.5.1 最簡單的最簡單的SQLSQL語句語句 (1 1)1.
54、1.最簡單的查詢語句最簡單的查詢語句 下面的下面的SQLSQL語句是最簡單的查詢形式,生成的記語句是最簡單的查詢形式,生成的記錄集包含整個表的全部數(shù)據(jù):錄集包含整個表的全部數(shù)據(jù):SELECT*FROM 基本信息基本信息 其中其中“*”指表中所有字段指表中所有字段(列列)。FROMFROM子句用于子句用于指定數(shù)據(jù)表。指定數(shù)據(jù)表。2.2.SELECTSELECT語句的基本語法語句的基本語法 在實際應(yīng)用中,往往需要從一個或多個表中選在實際應(yīng)用中,往往需要從一個或多個表中選擇符合特定條件的記錄構(gòu)成記錄集,因此應(yīng)對擇符合特定條件的記錄構(gòu)成記錄集,因此應(yīng)對SELECTSELECT語句的語法有一定的了解。以
55、下是語句的語法有一定的了解。以下是SELECTSELECT語語句的基本語法。句的基本語法。14.5.1 14.5.1 最簡單的最簡單的SQLSQL語句語句 (2 2)SELECT SELECT*|字段列表字段列表 FROM FROM 表名表名 WHERE WHERE 查詢條件查詢條件 GROUP BY GROUP BY 分組字段分組字段 HAVING HAVING 分組條件分組條件 ORDER BY ORDER BY 排排序字段序字段 ASC|DESCASC|DESC說明說明:*|字段列表字段列表:“*”表示所有字段;表示所有字段;“字段列字段列表表”指定字段,多個字段間用逗號分隔,來自不同指
56、定字段,多個字段間用逗號分隔,來自不同表的同名字段前須加表的名稱和圓點表的同名字段前須加表的名稱和圓點。FROM FROM子句:指定表。若指定多個表子句:指定表。若指定多個表,用逗號分隔。用逗號分隔。WHERE WHERE子句:指定選擇記錄的條件。子句:指定選擇記錄的條件。14.5.1 14.5.1 最簡單的最簡單的SQLSQL語句語句 (3 3)GROUP BYGROUP BY及及HAVINGHAVING子句:分組過濾,將分組字段子句:分組過濾,將分組字段中同值記錄合并為一條記錄。中同值記錄合并為一條記錄。ORDER BYORDER BY:排序。排序。ASCASC為升序為升序(默認(rèn)默認(rèn));D
57、ESCDESC為降為降序。序。【例【例14.214.2】選擇】選擇“基本信息基本信息”表中的表中的“學(xué)號學(xué)號”和和“姓名姓名”字段,字段,“成績成績”表中的表中的“課號課號”和和“分?jǐn)?shù)分?jǐn)?shù)”字段構(gòu)成記錄集。字段構(gòu)成記錄集。SELECT 基本信息基本信息.學(xué)號學(xué)號,姓名姓名,課號課號,分?jǐn)?shù)分?jǐn)?shù) FROM 基本信息基本信息,成績成績 WHERE 基本信息基本信息.學(xué)號學(xué)號=成成績績.學(xué)號學(xué)號 返回首頁返回本節(jié)14.5.2 14.5.2 限定記錄集篩選條件(限定記錄集篩選條件(1 1)在在SELECTSELECT語句的各子句中,語句的各子句中,WHEREWHERE子句使用頻率子句使用頻率最高。該子句
58、指明查詢的條件。在最高。該子句指明查詢的條件。在WHEREWHERE子句中可子句中可使用各種關(guān)系使用各種關(guān)系(比較比較)運算符表示篩選記錄的條件。運算符表示篩選記錄的條件。FROM 選表選表 表 1 表 2 表 i SELECT 選字段選字段 字段 1 字段 2 字段 j 生成生成 記錄集記錄集 記錄 1 記錄 2 記錄 k WHERE 限定條件限定條件 圖14.28 用SQL語句生成記錄集 14.5.2 14.5.2 限定記錄集篩選條件(限定記錄集篩選條件(2 2)【例【例14.314.3】選擇】選擇“基本信息基本信息”表中所有男生構(gòu)成表中所有男生構(gòu)成記錄集:記錄集:SELECT*FROM
59、基本信息基本信息 WHERE 性別性別=男男 【例【例14.414.4】取】取“基本信息基本信息”表中張三的學(xué)號和姓表中張三的學(xué)號和姓名,根據(jù)其學(xué)號取名,根據(jù)其學(xué)號取“成績成績”表中該學(xué)生的各科成績表中該學(xué)生的各科成績構(gòu)成記錄集:構(gòu)成記錄集:SELECT 基本信息基本信息.學(xué)號學(xué)號,姓名姓名,課號課號,分?jǐn)?shù)分?jǐn)?shù) FROM 基本信基本信息息,成績成績 WHERE 基本信息基本信息.學(xué)號學(xué)號=成績成績.學(xué)號學(xué)號 AND 姓名姓名=張三張三 在在WHEREWHERE子句中使用子句中使用LikeLike運算符可實現(xiàn)模糊查詢。運算符可實現(xiàn)模糊查詢。SQLSQL語句中語句中LikeLike運算符的通配符是
60、運算符的通配符是“%”“%”,可代表任,可代表任何字符,字符數(shù)不限。何字符,字符數(shù)不限。14.5.2 14.5.2 限定記錄集篩選條件(限定記錄集篩選條件(3 3)【例【例14.514.5】用】用LikeLike運算符進(jìn)行模糊查詢。運算符進(jìn)行模糊查詢。查詢所有姓查詢所有姓“張張”的學(xué)生:的學(xué)生:SELECT*FROM 基本信息基本信息 WHERE 姓名姓名 Like 張張%查詢所有姓名中含有查詢所有姓名中含有“小小”字的學(xué)生:字的學(xué)生:SELECT*FROM 基本信息基本信息 WHERE 姓名姓名 Like%小小%查詢姓名最后一個字為查詢姓名最后一個字為“剛剛”的所有學(xué)生:的所有學(xué)生:SELE
61、CT*FROM 基本信息基本信息 WHERE 姓名姓名 like%剛剛返回首頁返回本節(jié)14.5.3 14.5.3 在在VBVB程序中如何使用程序中如何使用SQLSQL語句語句(1)(1)在程序代碼中,在程序代碼中,SQLSQL語句必須以字符串形式提供。例如:語句必須以字符串形式提供。例如:Adodc1.RecordSource=SELECT*FROM 基本信息基本信息 如果如果SQLSQL語句中含有字符串常量,必須將字符串常量放在語句中含有字符串常量,必須將字符串常量放在一對單引號中。一對單引號中?!纠纠?4.614.6】在】在SQLSQL語句中引用字符串常量。語句中引用字符串常量。Dim
62、strSQL As StringstrSQL=SELECT*FROM 基本信息基本信息 WHERE 性別性別=男男Adodc1.RecordSource=strSQL 如果如果SQLSQL語句中引用了語句中引用了StringString型變量或其他控件的字符串型變量或其他控件的字符串類型的屬性(如文本框的類型的屬性(如文本框的TextText屬性),應(yīng)當(dāng)采用下面的引屬性),應(yīng)當(dāng)采用下面的引用形式(注意單引號的位置):用形式(注意單引號的位置):.&.&字符串變量或控件屬性字符串變量或控件屬性&.&.14.5.3 14.5.3 在在VBVB程序中如何使用程序中如何使用SQLSQL語句語句(2)(
63、2)【例【例14.714.7】在】在SQLSQL語句中引用字符串變量。語句中引用字符串變量。Dim strSQL As String,strSex As StringstrSex=男男strSQL=SELECT*FROM 基本信息基本信息 WHERE 性別性別=_&strSex&Adodc1.RecordSource=strSQL【例例14.814.8】在】在SQLSQL語句中引用控件的字符串類型的屬性。語句中引用控件的字符串類型的屬性。Dim strSQL As StringText1.Text=張張strSQL=SELECT*FROM 基本信息基本信息 WHERE 姓名姓名 Like _&
64、Text1.Text&%Adodc1.RecordSource=strSQL14.5.3 14.5.3 在在VBVB程序中如何使用程序中如何使用SQLSQL語句語句(3)(3)如果如果SQLSQL語句中引用了非字符串類型的變量或控語句中引用了非字符串類型的變量或控件屬性,不使用單引號。件屬性,不使用單引號?!纠纠?4.914.9】在】在SQLSQL語句中引用非字符串類型的變量。語句中引用非字符串類型的變量。Dim strSQL As String,intGrade As IntegerintGrade=60strSQL=SELECT*FROM 成績成績 WHERE 分?jǐn)?shù)分?jǐn)?shù)=_&intGra
65、de&AND 課程課程=英語英語Adodc1.RecordSource=strSQL返回首頁返回本節(jié)14.5.4 14.5.4 記錄排序記錄排序 用用ORDER BYORDER BY子句(子句(ASCASC為升序,為升序,DESCDESC為降序)為降序)對記錄排序。例如:對記錄排序。例如:SELECT*FROM 基本信息基本信息 ORDER BY 學(xué)號學(xué)號 ASCSELECT*FROM 基本信息基本信息 ORDER BY 姓名姓名 DESC返回首頁返回本節(jié)14.5.5 14.5.5 記錄分組記錄分組 用用GROUP BYGROUP BY子句將指定字段中數(shù)值相等的多條記錄子句將指定字段中數(shù)值相等
66、的多條記錄合并為一條記錄。可用合并為一條記錄??捎肏AVINGHAVING子句附加條件。子句附加條件?!纠纠?4.1014.10】以】以“班級班級”作為分組字段,查詢各班作為分組字段,查詢各班女生人數(shù)。女生人數(shù)。SELECT 班級班級,Count(*)AS 女生女生 FROM 基本基本情況情況 GROUP BY 班級班級,性別性別 HAVING 性別性別=女女說明:上面的語句中說明:上面的語句中Count(Count(*)表示統(tǒng)計記錄總數(shù),表示統(tǒng)計記錄總數(shù),ASAS子句表示存放統(tǒng)計結(jié)果的臨時字段別名。其他子句表示存放統(tǒng)計結(jié)果的臨時字段別名。其他SQLSQL函數(shù)還有函數(shù)還有SumSum、AvgAvg、MaxMax和和MinMin等。等。返回首頁返回本節(jié)14.5.6 14.5.6 過濾重復(fù)記錄(過濾重復(fù)記錄(1 1)過濾重復(fù)記錄是指忽略字段值相同的重復(fù)記錄。過濾重復(fù)記錄是指忽略字段值相同的重復(fù)記錄。例如,假定學(xué)籍表中含有例如,假定學(xué)籍表中含有400400名學(xué)生的信息,這些名學(xué)生的信息,這些學(xué)生來自學(xué)生來自1010個班級,現(xiàn)在要查詢學(xué)籍表中的個班級,現(xiàn)在要查詢學(xué)籍表中的“班級班級”字段生成
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案