《VB60教程課件 第13章 數(shù)據(jù)庫編程基礎(chǔ)》由會員分享,可在線閱讀,更多相關(guān)《VB60教程課件 第13章 數(shù)據(jù)庫編程基礎(chǔ)(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、浙江科技學(xué)院教信系計算機基礎(chǔ)教學(xué)網(wǎng)站:,www.,Goit,.Net,目錄,13.1,13.2,13.3,13.4,13.5,本章作業(yè),1.掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念,2.掌握關(guān)系型數(shù)據(jù)庫模型的關(guān)系(表),記錄、字段、關(guān)鍵字、索引概念等。,3.學(xué)會使用可視化數(shù)據(jù)管理器建立的數(shù)據(jù)庫是,Access,數(shù)據(jù)庫(類型名為.,mdb,),4.,了解數(shù)據(jù)庫控件的常用屬性及與相關(guān)控件的,綁定,5.了解結(jié)構(gòu)化查詢語言,SQL,對數(shù)據(jù)庫中的數(shù)據(jù)進行操作,本章要求:,第十三章 數(shù)據(jù)庫編程基礎(chǔ),本章重點:,本章難點:,查詢語言,SQL,對數(shù)據(jù)庫中的數(shù)據(jù)進行操作,數(shù)據(jù)庫的建立與使用,13.1 數(shù)據(jù)庫基礎(chǔ),13.
2、1.1,數(shù)據(jù)庫技術(shù)的產(chǎn)生與發(fā)展,硬件,OS,應(yīng)用系統(tǒng),用戶,DBMS,13.1.2,數(shù)據(jù)庫基本概念,根據(jù)數(shù)據(jù)模型,即實現(xiàn)數(shù)據(jù)結(jié)構(gòu)化所采用的聯(lián)系方式,數(shù)據(jù)庫可以分為層次數(shù)據(jù)庫,、,網(wǎng)狀數(shù)據(jù)庫,和,關(guān)系數(shù)據(jù)庫,。,關(guān)系數(shù)據(jù)庫的有關(guān)概念,1,關(guān)系(表),在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以關(guān)系的形式出現(xiàn),可以把關(guān)系理解成一張二維表(,Table,)。,2,記錄(行),每張二維表均由若干行和列構(gòu)成,其中每一行稱為一條記錄(,Record,),3,字段(列),二維表中的每一列稱為一個字段(,Field,),,每一列均有一個名字,稱為字段名,各字段名互不相同。,4 主鍵,關(guān)系數(shù)據(jù)庫中的某個字段或某些字段的組合定義為主鍵
3、(,Primary Key,)。,每條記錄的主鍵值都是唯一的,這就保證了可以通過主鍵唯一標識一條記錄。,13.1.2,數(shù)據(jù)庫基本概念,5,索引,為了提高數(shù)據(jù)庫的訪問效率,表中的記錄應(yīng)該按照一定順序排列,通常建立一個較小的表索引表,該表中只含有索引字段和記錄號。通過索引表可以快速確定要訪問記錄的位置。,13.1.3,Visual Basic,的數(shù)據(jù)庫應(yīng)用,Visual Basic,是一個功能強大的數(shù)據(jù)庫開發(fā)平臺,所以常常選擇,VB,作為開發(fā)數(shù)據(jù)庫前臺應(yīng)用程序的工具。,13.1.2,數(shù)據(jù)庫基本概念,13.2,數(shù)據(jù)庫的設(shè)計與管理,13.2.1,建立數(shù)據(jù)庫,VB,提供了兩種方法建立數(shù)據(jù)庫,分別是:,可
4、視化數(shù)據(jù)管理器,數(shù)據(jù)訪問對象(,DAO,),1、,可視化數(shù)據(jù)管理器,使用可視化數(shù)據(jù)管理器建立的數(shù)據(jù)庫是,Access,數(shù)據(jù)庫(類型名為,.,mdb,),,可以被,Access,直接打開和操作。在,VB,環(huán)境下,執(zhí)行“外接程序”菜單中的“可視化數(shù)據(jù)管理器”命令,即可打開如圖,13-3,所示的“可視化數(shù)據(jù)管理器”窗口。,2、,建立數(shù)據(jù)表,以建立一個如下結(jié)構(gòu)的學(xué)生表為例:,13.2,數(shù)據(jù)庫的設(shè)計與管理,圖13-4,輸入數(shù)據(jù)庫文件名,(,2,)在對話框中選擇數(shù)據(jù)庫文件保存的位置,并輸入文件名后(保存類型只能是,MDB,),單擊保存按鈕,將打開如圖,13-5,所示的建立數(shù)據(jù)表窗口。,(,1,)在“可視化
5、數(shù)據(jù)管理器”窗口中執(zhí)行“文件”菜單中的“新建”命令(假設(shè)選擇,Microsoft Access,,,版本,7.0,MDB,),后,彈出如圖,13-4,所示的對話框。,13.2,數(shù)據(jù)庫的設(shè)計與管理,圖13-5 建立數(shù)據(jù)表窗口,(,3,)右擊數(shù)據(jù)庫窗口,在彈出的菜單中選擇“新建表”命令,打開如圖,13-6,所示的“表結(jié)構(gòu)”對話框。,13.2,數(shù)據(jù)庫的設(shè)計與管理,(,4,)在“表結(jié)構(gòu)”對話框中輸入表名后,單擊“添加字段”按鈕,在彈出的如圖,13-7,所示的“添加字段”對話框中輸入字段名,選擇字段類型(,Text,類型字段還需輸入字段大?。V貜?fù)此過程直至添加完所有字段后,單擊“關(guān)閉”按鈕。,圖,13
6、-6,“表結(jié)構(gòu)”對話框,13.2,數(shù)據(jù)庫的設(shè)計與管理,圖13-7 “添加字段”對話框,3,建立索引,單擊“表結(jié)構(gòu)”對話框的“添加索引”按鈕,在彈出的對話框中(如圖,13-8,所示)輸入索引名稱,選擇索引字段后,單擊“確定”按鈕即完成了索引的建立過程。,13.2,數(shù)據(jù)庫的設(shè)計與管理,圖13-8 “添加索引”對話框圖13-9 “數(shù)據(jù)庫”窗口,13.2,數(shù)據(jù)庫的設(shè)計與管理,13.2.2 數(shù)據(jù)庫的基本操作,輸入數(shù)據(jù),編輯數(shù)據(jù),刪除數(shù)據(jù),排序數(shù)據(jù),過濾數(shù)據(jù),移動數(shù)據(jù),查找數(shù)據(jù),右鍵單擊表名,使用快捷菜單的打開,可打開如圖,13-10,所示的輸入數(shù)據(jù)窗口,。,13.2,數(shù)據(jù)庫的設(shè)計與管理,13.3 數(shù)據(jù)控
7、件與數(shù)據(jù)庫網(wǎng)格控件,13.3.1,數(shù)據(jù)控件,數(shù)據(jù)控件(,Data,),提供了一種方便地訪問數(shù)據(jù)庫中數(shù)據(jù)的方法,使用數(shù)據(jù)控件無須編寫代碼就可以對,VB,所支持的各種類型的數(shù)據(jù)庫執(zhí)行大部分數(shù)據(jù)訪問操作。,數(shù)據(jù)控件本身不能顯示和直接修改記錄,只能在與數(shù)據(jù)控件相關(guān)聯(lián)的數(shù)據(jù)約束控件中顯示各個記錄。,可以作數(shù)據(jù)約束控件的標準控件有以下,8,種:,文本框、標簽、圖片框、圖像框、檢查框、列表框、組合框、,OLE,控件。,2、數(shù)據(jù)控件屬性,1.,Connect,屬性指定數(shù)據(jù)庫類型,VB,可識別的數(shù)據(jù)庫有:,MDB,文件、,DBF,文件、,DB,文件、,DF,文件和,ODBC,數(shù)據(jù)庫,2.,DatabaseNam
8、e,屬性,指定具體使用的數(shù)據(jù)庫。,3.,RecordType,屬性,確定記錄集合類型。,4.,RecordSource,屬性,確定具體可訪問的數(shù)據(jù)表。,5.,EofAction,和,BofAction,屬性決定數(shù)據(jù)控件要采取的操作。,6.,RedaOnly,屬性用于控制能否對記錄集進行寫操作。,要使關(guān)聯(lián)控件能被數(shù)據(jù)庫約束,必須對控件的兩個屬性進行設(shè)置:,7.,DataSource,屬性通過指定一個有效的數(shù)據(jù)控件連接一個數(shù)據(jù)庫。,8.,DataField,屬性設(shè)置數(shù)據(jù)庫有效的字段。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,3方法,(,1,),Refresh,方法,可以在數(shù)據(jù)控件上使用,Refresh
9、,方法來打開或重新打開數(shù)據(jù)庫(如果,DatabaseName,、,ReadOnly,或,Connect,屬性的設(shè)置值發(fā)生改變)。,(,2,),UpdateControls,方法,此方法用于從數(shù)據(jù)控件的,Recordset,對象中讀取當前記錄,并將數(shù)據(jù)顯示在相關(guān)約束控件上。,(,3,),UpdateRecord,方法,當約束控件的內(nèi)容改變時,如果不移動記錄指針,則數(shù)據(jù)庫中的值不會改變,可通過調(diào)用,UpdateRecord,方法來確認對記錄的修改,將約束控件中的數(shù)據(jù)強制寫入數(shù)據(jù)庫中。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,4,事件,(,1,),Reposition,事件,當數(shù)據(jù)控件中移動記錄指針改變
10、當前記錄時觸發(fā)該事件。,(,2,),Validate,事件,如果移動數(shù)據(jù)控件中記錄指針,并且約束控件中的內(nèi)容已被修改,此時數(shù)據(jù)庫當前記錄的內(nèi)容將被更新,同時觸發(fā)該事件。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,5記錄集,Recordset,對象,一個,Recordset,對象代表一個數(shù)據(jù)庫表里的記錄,或運行一次查詢所得的記錄的結(jié)果。在“,Data,”,控件中可用,3,類,Recordset,對象,即,Table,(,表類型),、,Dynaset(,動態(tài)類型),和,Snapshot(,快照類型),,默認為,Dynaset,類型,。,l,表類型,:一個記錄集合,代表能用來添加、更新或刪除記錄的單個數(shù)據(jù)
11、庫表。,l,動態(tài)類型,:一個記錄的集合動態(tài),代表一個數(shù)據(jù)庫表或包含從一個或多個表取出的字段的查詢結(jié)果。可從,Dynaset,類型的記錄集中添加、更新或刪除記錄,并且任何改變都將會反映在基本表上。,l,快照類型,:一個記錄集合靜態(tài)副本,可用于尋找數(shù)據(jù)或生成報告。一個快照類型的,Recordset,能包含從一個或多個在同一個數(shù)據(jù)庫中的表里取出的字段,但字段不能更改。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,在實際操作中使用什么記錄集關(guān)鍵取決于要完成的任務(wù)。,表類型的記錄集,已建立了索引,適合快速定位與排序,但內(nèi)存開銷太大。,動態(tài)集類型,的記錄集則適合更新數(shù)據(jù),但其搜索速度不及表類型。,快照類型的記錄集
12、,內(nèi)存開銷最小,適合顯示只讀數(shù)據(jù)。,使用,Recordset,對象的屬性與方法的一般格式為:,數(shù)據(jù)控件名,.,Recordset,.,屬性,/,方法,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,6、使用,Recordset,對象連接與訪問數(shù)據(jù)庫的記錄,(1),Move,方法,使用,Move,方法遍歷整個記錄集中的記錄。,Move,方法是:,MoveFirst,或,MoveLast,方法移至第一個,或,最后一個記錄。,MoveNext,或,MovePrevious,方法移至下一個,或,上一個記錄。,Move n,方法向前或向后移,n,個記錄,,n,為指定的數(shù)值。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,(2
13、),Find,方法,可在指定的,Dynaset,或,Snapshot,類型的,Recordset,對象中查找與指定條件相符的一個記錄,并使之成為當前記錄。4種,Find,方法是:,FindFirst,或,FindLast,方法.找到滿足條件的第一個,或,最后一個記錄。,FindNext,或,FindPrevious,方法找到滿足條件的下一個,或,上一個記錄。,4種,Find,方法的語法格式相同:,數(shù)據(jù)集合,.,Find,方法 條件,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,(3),Seek,方法,使用,Seek,方法可在,Table,表中查找與指定索引規(guī)則相符的第一個記錄,并使之成為當前記錄。其語法
14、格式為:,數(shù)據(jù)表對象,.,Seek comparison,key1,key2,(4)Refresh,方法,如果在設(shè)計狀態(tài)沒有為打開數(shù)據(jù)庫控件的有關(guān)屬性全部賦值,或當,RecordSource,在運行時被改變后,必須使用激活數(shù)據(jù)控件的,Refresh,方法激活這些變化。例如:,Data1,.,DatabaseName,=C:VB,Biblio,.,mdb,Data1,.,RecordSource,=,Titles,Data1,.,Refresh,(5)Close,方法,關(guān)閉指定的數(shù)據(jù)庫、記錄集并釋放分配給它的資源其語法格式為:,對象,.,Close,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,(,6,)
15、,AddNew,方法,向數(shù)據(jù)庫中添加記錄的步驟如下:,首先,調(diào)用,AddNew,方法,打開一個空白記錄;,然后,通過相關(guān)約束控件給各字段賦值;,最后,單擊數(shù)據(jù)控件上的箭頭按鈕,移動記錄指針,或調(diào)用,UpdateRecord,方法確定所做添加。,(,7,),Delete,方法,刪除數(shù)據(jù)庫中記錄的步驟如下:,首先,將要刪除的記錄定位為當前記錄;,然后,調(diào)用,Delete,方法;,最后,移動記錄指針,確定所做刪除操作。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,(,8,),Edit,方法,編輯數(shù)據(jù)庫中記錄的步驟如下:,首先,將要修改的記錄定位為當前記錄;,然后,調(diào)用,Edit,方法;,然后,通過相關(guān)約束控
16、件修改各字段值;,最后,移動記錄指針,確定所做編輯操作。,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,13.3.2 數(shù)據(jù)庫網(wǎng)格控件(略),數(shù)據(jù)庫網(wǎng)格控件,DBGrid,,,幾乎不用寫代碼就可直接將數(shù)據(jù)庫的記錄顯示在網(wǎng)格內(nèi)。,當,DBGrid,控件的,DataSource,屬性設(shè)置為一個,Data,控件時,,DBGrid,控件會被自動地填充并且其列標題會用,Data,控件的記錄集里的數(shù)據(jù)自動地設(shè)置。,創(chuàng)建,DBGrid,控件時,它只有一列和一行。當控件的,AllowUpdate,屬性設(shè)為,True,,可編輯表里的任意單元表格,而當移動到新的一行時,它被自動地更新。將,AllowAddNew,和,AllowDelete,屬性設(shè)置為,True,,可增刪記錄。,DBGrid,控件屬于,ActiveX,控件,需要執(zhí)行“工程”菜單中的“部件”命令項,在“部件”對話框中選擇“,Microsoft Data Bound Gird Control 5.0,(,sp3,)”,添加到工具箱中,,13.3 數(shù)據(jù)控件與數(shù)據(jù)庫網(wǎng)格控件,13.4.1,SQL,概述,結(jié)構(gòu)化查詢語言,SQL,是操作數(shù)據(jù)庫的工業(yè)標準語言。在,S