![1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件_第1頁](http://file4.renrendoc.com/view/4398b488a7be37701c02ce6859bd8da9/4398b488a7be37701c02ce6859bd8da91.gif)
![1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件_第2頁](http://file4.renrendoc.com/view/4398b488a7be37701c02ce6859bd8da9/4398b488a7be37701c02ce6859bd8da92.gif)
![1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件_第3頁](http://file4.renrendoc.com/view/4398b488a7be37701c02ce6859bd8da9/4398b488a7be37701c02ce6859bd8da93.gif)
![1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件_第4頁](http://file4.renrendoc.com/view/4398b488a7be37701c02ce6859bd8da9/4398b488a7be37701c02ce6859bd8da94.gif)
![1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件_第5頁](http://file4.renrendoc.com/view/4398b488a7be37701c02ce6859bd8da9/4398b488a7be37701c02ce6859bd8da95.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1.掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念2.掌握關系型數(shù)據(jù)庫模型的關系(表),記錄、字段、關鍵字、索引概念等。3.學會使用可視化數(shù)據(jù)管理器建立的數(shù)據(jù)庫是Access數(shù)據(jù)庫(類型名為.mdb)4.了解數(shù)據(jù)庫控件的常用屬性及與相關控件的綁定5.了解結構化查詢語言SQL對數(shù)據(jù)庫中的數(shù)據(jù)進行操作本章要求:第15章VisualBasic與數(shù)據(jù)庫技術本章重點:本章難點:1、查詢語言SQL對數(shù)據(jù)庫中的數(shù)據(jù)進行操作2、ADO對象模型數(shù)據(jù)庫的建立與使用1.掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念本章要求:15.1數(shù)據(jù)庫的基本概念一、數(shù)據(jù)庫的概念數(shù)據(jù)庫是以一定方式組織、存儲及處理相互關聯(lián)的數(shù)據(jù)的集合,它以一定的數(shù)據(jù)結構和一定的文件組織方式存儲數(shù)據(jù),并允許用戶訪問。這種集合具備下述特點:最少冗余;數(shù)據(jù)資源共享;數(shù)據(jù)獨立性,即數(shù)據(jù)獨立于使用它的應用程序;由統(tǒng)一的軟件系統(tǒng)管理和控制數(shù)據(jù)的增加、刪除、修改和檢索。
15.1數(shù)據(jù)庫的基本概念15.1數(shù)據(jù)庫的基本概念二、數(shù)據(jù)庫發(fā)展的三個階段人工管理階段;文件管理階段數(shù)據(jù)庫管理階段
15.1數(shù)據(jù)庫的基本概念二、數(shù)據(jù)庫發(fā)展的三個階段15.1數(shù)據(jù)庫的基本概念三、數(shù)據(jù)庫分類數(shù)據(jù)庫中數(shù)據(jù)的組織形式有多種,按數(shù)據(jù)庫使用的數(shù)據(jù)結構模型劃分,到目前為止,數(shù)據(jù)庫可分為:層次數(shù)據(jù)庫:采用層次模型;網(wǎng)狀數(shù)據(jù)庫:采用網(wǎng)狀模型;關系數(shù)據(jù)庫:采用關系模型;面向對象數(shù)據(jù)庫:采用面向對象模型。15.1數(shù)據(jù)庫的基本概念三、數(shù)據(jù)庫分類15.1數(shù)據(jù)庫基本概念
根據(jù)數(shù)據(jù)模型,即實現(xiàn)數(shù)據(jù)結構化所采用的聯(lián)系方式,數(shù)據(jù)庫可以分為層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關系數(shù)據(jù)庫。15.1數(shù)據(jù)庫基本概念根據(jù)數(shù)據(jù)模型,即實現(xiàn)數(shù)1.關系(表)在關系數(shù)據(jù)庫中,數(shù)據(jù)以關系的形式出現(xiàn),可以把關系理解成一張二維表(Table)。2.
記錄(行)每張二維表均由若干行和列構成,其中每一行稱為一條記錄(Record),3.
字段(列)二維表中的每一列稱為一個字段(Field),每一列均有一個名字,稱為字段名,各字段名互不相同。4.
主鍵關系數(shù)據(jù)庫中的某個字段或某些字段的組合定義為主鍵(PrimaryKey)。每條記錄的主鍵值都是唯一的,這就保證了可以通過主鍵唯一標識一條記錄。關系數(shù)據(jù)庫的有關概念
1.關系(表)關系數(shù)據(jù)庫的有關概念5.索引
為了提高數(shù)據(jù)庫的訪問效率,表中的記錄應該按照一定順序排列,通常建立一個較小的表——索引表,該表中只含有索引字段和記錄號。通過索引表可以快速確定要訪問記錄的位置。
5.索引15.2數(shù)據(jù)庫管理器1
建立數(shù)據(jù)庫VB提供了兩種方法建立數(shù)據(jù)庫,分別是:可視化數(shù)據(jù)管理器數(shù)據(jù)訪問對象(DAO)15.2數(shù)據(jù)庫管理器1建立數(shù)據(jù)庫VB提供了兩種方法建立
大型數(shù)據(jù)庫(如Oracle、Sybase等)不能在VisualBasic6.0中創(chuàng)建,要創(chuàng)建這些類型的數(shù)據(jù)庫,需要使用相應數(shù)據(jù)庫管理系統(tǒng)提供的工具來完成。VB6.0提供了創(chuàng)建MicrosoftAccess數(shù)據(jù)庫和其它一些數(shù)據(jù)庫的工具——“可視化數(shù)據(jù)管理器”。在VisualBasic開發(fā)環(huán)境內單擊“外接程序”菜單中的“可視化數(shù)據(jù)管理器”選項或在操作系統(tǒng)桌面上運行VisualBasic系統(tǒng)目錄中的Visdata.exe,都可打開可視化數(shù)據(jù)管理器。大型數(shù)據(jù)庫(如Oracle、Sybase等)不15.2數(shù)據(jù)庫管理器(Visdata)15.2數(shù)據(jù)庫管理器(Visdata)一、創(chuàng)建一個數(shù)據(jù)庫
(1)選擇“可視化數(shù)據(jù)管理器”中“文件”菜單中的“新建”菜單項用于創(chuàng)建數(shù)據(jù)庫,若選擇“打開數(shù)據(jù)庫”則用于打開一個已經建立好的數(shù)據(jù)庫。(2)選擇“MicrosoftAccess”菜單項,單擊該菜單項下的“Version7.0MDB”菜單項,打開如圖10-3所示的“選擇要創(chuàng)建的MicrosoftAccess數(shù)據(jù)庫”對話框。(3)選擇新建數(shù)據(jù)庫要保存的目錄后,在“文件名”文本框中輸入數(shù)據(jù)庫的名稱student,也就是數(shù)據(jù)庫的文件名稱。(4)單擊“確定”按鈕關閉對話框,“可視化數(shù)據(jù)管理器”開始在指定的目錄下創(chuàng)建以指定名稱命名的MicrosoftAccess數(shù)據(jù)庫,完成數(shù)據(jù)庫創(chuàng)建工作,一、創(chuàng)建一個數(shù)據(jù)庫(1)選擇“可15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)二、向數(shù)據(jù)庫中添加數(shù)據(jù)表
操作步驟為:(1)在“數(shù)據(jù)庫窗口”中右擊鼠標,系統(tǒng)彈出一快捷菜單,單擊其中的“新建表”菜單項,系統(tǒng)將打開“表結構”對話框。(2)在“表名稱”文本框中鍵入表名,這里鍵入名稱xjb。(3)單擊“添加字段”按鈕,系統(tǒng)顯示“添加字段”對話框,在這個對話框中定義表的字段。在“名稱”文本框中輸入字段名稱,這里輸入第一個字段“學號”的名稱“st_No”;單擊“類型”下拉列表框,從中選擇字段類型“Integer”;“大小”文本框用于指定Text類型字段的寬度,該長度限制了輸入到這個字段的文本字符的最大長度,選擇Text之外的數(shù)據(jù)類型時,不需要指定寬度。單擊“確定”按鈕,這樣我們就定義了xjb表的第一個字段。
二、向數(shù)據(jù)庫中添加數(shù)據(jù)表操作步驟為:15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)三、數(shù)據(jù)表中數(shù)據(jù)的編輯
三、數(shù)據(jù)表中數(shù)據(jù)的編輯四、添加或刪除索引
四、添加或刪除索引五、使用查詢生成器
五、使用查詢生成器
一、數(shù)據(jù)控件的概念
數(shù)據(jù)控件(Data控件)是VisualBasic中最常見的控件,在工具箱中的圖標為,利用它可以在應用程序中訪問前面所創(chuàng)建的數(shù)據(jù)庫。數(shù)據(jù)控件不能顯示數(shù)據(jù),需要與數(shù)據(jù)綁定控件配合使用。
15.3數(shù)據(jù)控件一、數(shù)據(jù)控件的概念15.3數(shù)據(jù)控件二、數(shù)據(jù)控件常用屬性Connect屬性Connect屬性指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫類型。VisualBasic6.0提供了7種可訪問的數(shù)據(jù)庫類型,VisualBasic可識別的數(shù)據(jù)庫有:1)MicrosoftAccess的MDB文件(缺省值);2)BorlanddBASE、MicrosoftFoxpro的DBF文件;3)BorlandParadox的DB文件;4)NovellBtrieve的DDF文件;5)MicrosoftExcel的XLS文件;6)Lotus的WKS文件;7)OpenDataBaseConnectivity(ODBC)數(shù)據(jù)庫二、數(shù)據(jù)控件常用屬性Connect屬性Connect屬性指2.DatabaseName屬性DatabaseName屬性指定具體使用數(shù)據(jù)庫的名稱,包括所有的路徑名。如果連接的是單表數(shù)據(jù)庫,則DatabaseName屬性應設置為數(shù)據(jù)庫文件所在的子目錄名,而具體文件名放在RecordSource屬性中。如果在“屬性”窗口中單擊DatabasName屬性右邊的按鈕,會出現(xiàn)一個公用對話框用于選擇相應的數(shù)據(jù)庫。例如,下面語句設置了可訪問的數(shù)據(jù)庫名稱:如果連接一個MicrosoftAccess的數(shù)據(jù)庫C:\職員檔案.mdb,則Data1.DatabaseName=”C:\職員檔案.mdb”;如果連接一個Foxpro數(shù)據(jù)庫C:\yang\職員檔案1.dbf,因為Foxpro數(shù)據(jù)庫只含有一個表,則Data1.DatabaseName=”C:\yang”,RecordSource=”職員檔案1.dbf”。如果未寫數(shù)據(jù)庫文件的擴展名,則缺省情況下為使用以.mdb為擴展名的數(shù)據(jù)庫文件。2.DatabaseName屬性DatabaseName屬3、RecordSource屬性RecordSource屬性確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構成記錄集對象Recordset。4)RecordsetType屬性RecordsetType屬性確定記錄集類型。5)ReadOnly屬性在對數(shù)據(jù)庫只查看不修改時,通常將ReadOnly屬性設置為True,而在運行時根據(jù)一定的條件,響應一定的指令后,才將它設置為False。6)Exclusive屬性Exclusive屬性值設置為True時,則在通過關閉數(shù)據(jù)庫撤消這個設置前,其他任何人不能對數(shù)據(jù)庫訪問。這個屬性的缺省值是False。3、RecordSource屬性RecordSource屬性7)BOFAction、EOFAction屬性當BOFAction值為0,控件重定位到第一個記錄;BOFAction值為1,移過記錄集開始位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對第一個記錄的無效事件。當EOFAction值為0,控件重定位到最后一個記錄;當EOFAction值為1,移過記錄集結束位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對最后一個記錄的無效事件;EOFAction值為2,向記錄集加入新的空記錄,可以對新紀錄進行編輯,移動記錄指針新紀錄寫入數(shù)據(jù)庫。7)BOFAction、EOFAction屬性數(shù)據(jù)控件的常用方法1Refresh方法如果在設計狀態(tài)沒有為打開數(shù)據(jù)控件的有關屬性全部賦值,或當RecordSource在運行時被改變后,必須使用激活數(shù)據(jù)控件的Refresh方法激活這些變化。2UpdateCountrols方法UpdateCountrols方法可以將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到被數(shù)據(jù)控件綁定的空件內。使用UpdateCountrols方法終止用戶對綁定內控件的修改。3UpdateRecord方法當對綁定內的控件修改后,數(shù)據(jù)控件需要移動記錄集的指針才能保存修改,如果使用UpdateRecord方法可強制數(shù)據(jù)控件將綁定控件內的數(shù)據(jù)寫入到數(shù)據(jù)庫中而不再觸發(fā)Vaildate事件。在代碼中用該方法修改。數(shù)據(jù)控件的常用方法1Refresh方法如果在設計狀態(tài)沒有為數(shù)據(jù)控件的事件1Reposition事件Reposition事件發(fā)生在一條記錄成為當前記錄后。只要改變記錄集的指針使其從一條指針移到另一條記錄。會產生Reposition事件,可以在該事件過程中建立程序,可反映出記錄位置、記錄總數(shù)等。2Validate事件當要移動記錄指針前,修改與刪除記錄前或卸載含有數(shù)據(jù)控件的窗體時觸發(fā)Validate事件。Validate事件檢查被數(shù)據(jù)控綁定的控件內的數(shù)據(jù)是否發(fā)生變化。它通過save參數(shù)()True或False)判斷是否有數(shù)據(jù)發(fā)生變化,Action參數(shù)判斷哪一種操作觸發(fā)了Validate事件。Action參數(shù)可為表15-6中的值:數(shù)據(jù)控件的事件1Reposition事件RepositioRecordset對象代表一組與數(shù)據(jù)庫相關的邏輯記錄集合。它所對應的數(shù)據(jù)來源可以是數(shù)據(jù)表,也可以是和SQL語言中查詢語句(SELECT)有關的查詢結果。Recordset對象有三種類型:Table類型:記錄集為表集,可以顯示、添加、刪除和修改,具有較好的更新性能。Dynaset類型:記錄集為動態(tài)集,可以顯示、添加、刪除和修改,并具有較大的操作靈活性。Snapshot類型:記錄集為快照集,只能顯示,具有較好的顯示速度。RecordSet對象的屬性和方法Recordset對象代表一組與數(shù)據(jù)庫相關的邏輯記錄集合。它
◆記錄集Recordset的屬性
Recordset
是一個數(shù)據(jù)結構,通常用來表示從數(shù)據(jù)庫中提取的一個記錄集。在VB中只能通過Recordset對象對數(shù)據(jù)庫進行操作。(1)BOF和EOF屬性用來測試記錄指針是否已超出數(shù)據(jù)庫的首記錄或尾記錄。BOF屬性用來測試記錄指針是否超出文件頭;EOF屬性用來測試記錄指針是否超出文件尾。(1)BOF和EOF屬性
假設需要讀出數(shù)據(jù)庫中的全部記錄,可以使用Recordset的EOF屬性,程序如下:
DoWhileData1.Recordset.Eof=False依次讀出記錄記錄指針下移一個Loop
(2)AbsolutePosition屬性AbsolutePosition屬性用于反映記錄指針的當前位置。注意:AbsolutePosition屬性所反映出來的記錄指針的當前位置值比它的絕對位置的編號少1,假設當前位置十號記錄假設需要讀出數(shù)據(jù)庫中的全部記錄,可以使用Records由AbsolutePosition給出的值則是2。
(3)Bookmark屬性Bookmark屬性用于返回或設置當前記錄指針的書簽,其數(shù)據(jù)類型為String。在程序中可以用Bookmark屬性對記錄指針重新定位。
(4)RecordCount屬性RecordCount屬性用于測量數(shù)據(jù)庫的總記錄數(shù)。在多用戶情況下,由于Recordset對象的不斷變化,RecordCount測出的數(shù)據(jù)可能不準確。為了能得到準確的記錄總數(shù),在測量記錄總數(shù)時需要先將記錄指針移動到最后一個由AbsolutePosition給出的值則是2。記錄,語句如下:Data1.Recordset.MoveLast然后使用RecordCount屬性,Data1.Recordset.RecordCount這樣就能準確地得到當前記錄集的記錄總數(shù)了。
(5)Nomatch屬性Nomatch屬性用于判斷在使用Find方法和Seek方法做查詢操作時是否查詢到符合查詢條件的記錄,如果其返回值為True則表示沒有符合條件的記錄,反之則表示有相應記錄被找到記錄,語句如下:(5)Nomatch屬性對記錄的操作能夠通過Recordset對象的方法實現(xiàn)。其常用方法有:1)AddNew方法加入一條新記錄到記錄集內存緩沖區(qū)。2)Edit方法允許對當前記錄進行修改。3)Delete方法用于刪除當前記錄。4)Update方法把內存緩沖區(qū)的內容寫進數(shù)據(jù)庫文件,保存對數(shù)據(jù)庫所作的改動。5)Close方法關閉記錄集和數(shù)據(jù)庫。該方法也能用在數(shù)據(jù)庫對象上,將數(shù)據(jù)庫關閉。RecordSet對象的方法對記錄的操作能夠通過Recordset對象的方法實現(xiàn)。其常用5)Move方法使用Move方法可代替對數(shù)據(jù)庫控件對象的4個箭頭的操作遍歷整個記錄幾種的記錄。5種Move方法是:(1)MoveFirst方法移至第一條記錄(2)MoveLast方法移至最后一條記錄(3)MoveNext方法移至下一條記錄(4)MovePrevious方法移至上一條記錄(5)Move[n]方法向前或向后移動n條記錄,n為指定的數(shù)值。5)Move方法(6)Find方法可在指定的Dynaset或Snapshot類型的Recordset對象中查找與指定條件相符的一個記錄,并使之成為當前記錄。4種Find方法是:FindFirst或FindLast方法.找到滿足條件的第一個或最后一個記錄。FindNext或FindPrevious方法找到滿足條件的下一個或上一個記錄。4種Find方法的語法格式相同: 數(shù)據(jù)集合.Find方法條件(6)Find方法數(shù)據(jù)綁定控件要使文本等控件與數(shù)據(jù)控件捆綁在一起,成為數(shù)據(jù)控件的綁定控件。并且能夠受到數(shù)據(jù)庫約束,必須在運行時對這些控件的兩個屬性進行設置:1)DataSource屬性DataSource屬性用來將一個有效的數(shù)據(jù)控件與一個數(shù)據(jù)庫連接。2)DataFleld屬性DataFleld屬性設置數(shù)據(jù)庫有效的字段與綁定控件建立聯(lián)系。綁定控件、數(shù)據(jù)控件和數(shù)據(jù)庫三者的關系數(shù)據(jù)綁定控件要使文本等控件與數(shù)據(jù)控件捆綁在一起,成為數(shù)據(jù)控件SQL(結構化查詢語言,StructureQueryLanguage)是操作數(shù)據(jù)庫的工業(yè)標準語言,許多數(shù)據(jù)庫和軟件系統(tǒng)都支持SQL或提供SQL語言接口。這一節(jié)將向用戶介紹SQL的常用語句。1.SQL命令SQL的功能實際上包括查詢、操作、定義和控制四個方面。其中最常用的是查詢功能,其次為數(shù)據(jù)定義功能。SQL基本命令動詞SQL功能命令動詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操作INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKE15.6SQL語言SQL(結構化查詢語言,StructureQueryLaSQL語言的核心是查詢語句,它的基本格式為:SELECT<列名表名>FROM<基本表名或視圖名>[WHERE<條件表達式>=[GROUPBY<列名l>[HAVING內部函數(shù)表達式][ORDERBY<列名2>[ASC或DESC31SQL語言的核心是查詢語句,它的基本格式為:SELECT<列SQL在VB中的應用
1.使用SELECT語句查詢無論是數(shù)據(jù)控件還是數(shù)據(jù)對象都可使用SELECT語句查詢數(shù)據(jù)。例如用SQL語句顯示數(shù)據(jù)庫Biblio.mdb中出版日期為1996年全部記錄。Data1.RecordSource="SELECT*FROMTitlesWHERE[YearPublished]=1996"
用Data1.Refresh方法激活這些變化。選擇表中所有字段指定表Title構成查詢條件SQL在VB中的應用選擇表中所有字段指定表Title構成查詢SELECT語句可以看作記錄集的定義語句,它從一個或多個表中獲取指定字段,生成一個較小的記錄集。下面通過一組對前面建立的學生成績數(shù)據(jù)庫的查詢操作來學習SELECT語句的基本用法。(1)選取表中部分列。例如查詢學生成績表中的英語和計算機成績:SELECT英語,計算機FROMscore(2)選取表中所有列。例如查詢學生成績表中的所有信息:SELECT*FROMscore(3)WHERE子句。例如查詢數(shù)學成績不及格的學生信息:SELECT*FROMscoreWHERE數(shù)學<60(4)復合條件。例如查詢數(shù)學和英語成績均不及格的學生信息:SELECT*FROMscoreWHERE數(shù)學<60AND英語<60SELECT語句可以看作記錄集的定義語句,它從一個或多個表中(5)ORDERBY子句。例如查詢學生成績表中的所有數(shù)學成績及格的學生信息,并將查詢結果按數(shù)學成績降序排列(ASC表示升序,DESC表示降序):SELECT*FROMscoreWHERE數(shù)學>=60ORDERBY數(shù)學DESC(6)統(tǒng)計信息。例如查詢數(shù)學成績不及格的人數(shù)、數(shù)學平均分、最高分:SELECTCOUNT(*)AS人數(shù)FROMscoreWHERE數(shù)學<60SELECTAVG(數(shù)學)AS平均分,MAX(數(shù)學)AS最高分FROMscore(7)GROUPBY子句。例如查詢男生與女生的數(shù)學平均分:SELECT性別,AVG(數(shù)學)AS平均分FROMscoreGROUPBY性別(5)ORDERBY子句。例如查詢學生成績表中的所有數(shù)學成(8)HAVING子句。例如查詢數(shù)學成績不及格的人數(shù)大于10人的班級和相應人數(shù):SELECT班級,COUNT(*)AS人數(shù)FROMscoreWHERE數(shù)學<60GROUPBY班級HAVINGCOUNT(*)>10(9)多表查詢。例如查詢學生的學號、姓名和籍貫(假設有一個student表,其中包含了學生的學號、籍貫等信息):SELECTscore.學號,score.姓名,score.數(shù)學,student.籍貫FROMscore,studentWHEREscore.學號=student.學號如前所述,數(shù)據(jù)控件的RecordSource屬性除了可以設置成表名外,還可以設置為一條SQL語句,格式如下:數(shù)據(jù)控件名.RecordSource=“SQL語句”(8)HAVING子句。例如查詢數(shù)學成績不及格的人
在使用ADO據(jù)控件前,必須先通過“工程/部件”菜單命令選擇“MicrosoftADODatacontrol6.0(0LEDB)”選項,將ADO數(shù)據(jù)控件添加到工具箱。ADO數(shù)據(jù)控件與VisualBasic的內部數(shù)據(jù)控件很相似,它允許使用ADO數(shù)據(jù)控件的基本屬性快速地創(chuàng)建與數(shù)據(jù)庫的連接。1.ADO數(shù)據(jù)控件的基本屬性(1)ConnectionString屬性ADO控件沒有DatabaseName屬性,它使用Connectionstring屬性與數(shù)據(jù)庫建立連接。該屬性包含了用于與數(shù)據(jù)源建立連接的相關信息,Connectionstring屬性帶有4個參數(shù),如下表所示。參數(shù)描述Provide指定連接提供者的名稱FileName指定數(shù)據(jù)源所對應的文件名RemoteProvide在遠程數(shù)據(jù)服務器打開一個客戶端時所用的數(shù)據(jù)源名稱RemoteServer在遠程數(shù)據(jù)服務器打開一個主機端時所用的數(shù)據(jù)源名稱15.7Activex數(shù)據(jù)對象及其使用參數(shù)(2)RecordSource屬性RecordSource確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構成記錄集對象Recordset。該屬性值可以是數(shù)據(jù)庫中的單個表名,一個存儲查詢,也可以是使用SQL查詢語言的一個查詢字符串。(3)ConnectionTimeout屬性用于數(shù)據(jù)連接的超時設置,若在指定時間內連接不成功顯示超時信息。(4)MaxRecords屬性定義從一個查詢中最多能返回的記錄數(shù)。2.ADO數(shù)據(jù)控件的方法和事件ADO數(shù)據(jù)控件的主要方法和事件與Data控件的方法和事件一樣。3.設置ADO數(shù)據(jù)控件的屬性具體內容請參見教材。(2)RecordSource屬性下面是某公司人力資源部的認識數(shù)據(jù)庫管理系統(tǒng)的員工管理程序,其中實現(xiàn)了員工的增加、修改、刪除、查詢等功能。解析:首先建立如圖所示的用戶界面,并設置各個控件的屬性,然后編寫相應代碼。應用舉例下面是某公司人力資源部的認識數(shù)據(jù)庫管理系統(tǒng)的員工管理程序,其1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件DimmbookmarkAsVariant“第一個按”鈕的事件代碼PrivateSubCommand1_Click()IfNotData1.Recordset.BOFThenData1.Recordset.MovePreviousElseMsgBox"已到數(shù)據(jù)庫頭,無法再移動!",vbCritical,"數(shù)據(jù)庫"Data1.Recordset.MoveFirstEndIfMe.RefreshEndSub“下一個”按鈕的事件代碼PrivateSubCommand2_Click()IfNotData1.Recordset.EOFThenData1.Recordset.MovenextElseMsgBox"已到數(shù)據(jù)庫尾,無法再移動!",vbCritical,"數(shù)據(jù)庫"Data1.Recordset.MovelastEndIfMe.RefreshEndSubDimmbookmarkAsVariant“第一個”按鈕的事件代碼PrivateSubCommand3_Click()Data1.Recordset.MoveFirstMe.RefreshEndSub“末一個”按鈕的事件代碼PrivateSubCommand4_Click()Data1.Recordset.MovelastMe.RefreshEndSub“查找”按鈕的事件代碼PrivateSubCommand5_Click()DimmnoAsStringmno=InputBox$("請輸入員工編號","查找")Data1.Recordset.FindFirst"員工編號='"&mno&"'"IfData1.Recordset.NoMatchThenMsgBox"無此編號",,"提示"EndSub“第一個”按鈕的事件代碼“新增”按鈕的事件代碼PrivateSubCommand6_Click()Command7.Enabled=NotCommand7.EnabledCommand8.Enabled=NotCommand8.EnabledCommand9.Enabled=NotCommand9.EnabledIfCommand6.Caption="新增"ThenCommand6.Caption="確認"mbookmark=Data1.Recordset.BookmarkData1.Recordset.AddNewText1.SetFocusElseCommand6.Caption="新增"Data1.Recordset.UpdateData1.Recordset.MovelastEndIfEndSub“新增”按鈕的事件代碼“刪除”按鈕的事件代碼PrivateSubCommand7_Click()DimsAsStringOnErrorGoToDelErrs=MsgBox("確定刪除這組記錄嗎?",vbQuestion+vbOKCancel,"刪除確定")Ifs=1ThenData1.Recordset.DeleteData1.Recordset.MovenextIfData1.Recordset.RecordCount>0ThenIfData1.Recordset.EOFThenData1.Recordset.MovelastEndIfEndIfEndIfExitSubDelErr:MsgBoxErr.DescriptionEndSub“刪除”按鈕的事件代碼“修改”按鈕的事件代碼PrivateSubCommand8_Click()Command6.Enabled=NotCommand6.EnabledCommand7.Enabled=NotCommand7.EnabledCommand9.Enabled=NotCommand9.EnabledIfCommand8.Caption="修改"ThenCommand8.Caption="確認"mbookmark=Data1.Recordset.BookmarkData1.Recordset.EditText1.SetFocusElseCommand8.Caption="修改"Data1.Recordset.UpdateEndIfEndSub“修改”按鈕的事件代碼“放棄”按鈕的事件代碼PrivateSubCommand9_Click()Command6.Caption="新增"Command8.Caption="修改"Command6.Enabled=TrueCommand7.Enabled=True
Command8.Enabled=TrueCommand9.Enabled=FalseData1.UpdateControlsData1.Recordset.Bookmark=mbookmarkEndSub“退出”按鈕的事件代碼PrivateSubCommand11_Click()EndEndSub“放棄”按鈕的事件代碼數(shù)據(jù)庫控件的檢查是否輸入合法數(shù)據(jù):PrivateSubData1_Validate(ActionAsInteger,SaveAsInteger)IfText1.Text=""And(Action=6OrText1.DataChanged)ThenMsgBox"數(shù)據(jù)不完整,必須要有編號!"Data1.UpdateControlsEndIfIfAction>=1AndAction<=4ThenCommand6.Caption="新增"Command8.Caption="修改"Command6.Enabled=TrueCommand7.Enabled=TrueCommand8.Enabled=TrueCommand9.Enabled=FalseEndIfEndSub數(shù)據(jù)庫控件的檢查是否輸入合法數(shù)據(jù):1.掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念2.掌握關系型數(shù)據(jù)庫模型的關系(表),記錄、字段、關鍵字、索引概念等。3.學會使用可視化數(shù)據(jù)管理器建立的數(shù)據(jù)庫是Access數(shù)據(jù)庫(類型名為.mdb)4.了解數(shù)據(jù)庫控件的常用屬性及與相關控件的綁定5.了解結構化查詢語言SQL對數(shù)據(jù)庫中的數(shù)據(jù)進行操作本章要求:第15章VisualBasic與數(shù)據(jù)庫技術本章重點:本章難點:1、查詢語言SQL對數(shù)據(jù)庫中的數(shù)據(jù)進行操作2、ADO對象模型數(shù)據(jù)庫的建立與使用1.掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念本章要求:15.1數(shù)據(jù)庫的基本概念一、數(shù)據(jù)庫的概念數(shù)據(jù)庫是以一定方式組織、存儲及處理相互關聯(lián)的數(shù)據(jù)的集合,它以一定的數(shù)據(jù)結構和一定的文件組織方式存儲數(shù)據(jù),并允許用戶訪問。這種集合具備下述特點:最少冗余;數(shù)據(jù)資源共享;數(shù)據(jù)獨立性,即數(shù)據(jù)獨立于使用它的應用程序;由統(tǒng)一的軟件系統(tǒng)管理和控制數(shù)據(jù)的增加、刪除、修改和檢索。
15.1數(shù)據(jù)庫的基本概念15.1數(shù)據(jù)庫的基本概念二、數(shù)據(jù)庫發(fā)展的三個階段人工管理階段;文件管理階段數(shù)據(jù)庫管理階段
15.1數(shù)據(jù)庫的基本概念二、數(shù)據(jù)庫發(fā)展的三個階段15.1數(shù)據(jù)庫的基本概念三、數(shù)據(jù)庫分類數(shù)據(jù)庫中數(shù)據(jù)的組織形式有多種,按數(shù)據(jù)庫使用的數(shù)據(jù)結構模型劃分,到目前為止,數(shù)據(jù)庫可分為:層次數(shù)據(jù)庫:采用層次模型;網(wǎng)狀數(shù)據(jù)庫:采用網(wǎng)狀模型;關系數(shù)據(jù)庫:采用關系模型;面向對象數(shù)據(jù)庫:采用面向對象模型。15.1數(shù)據(jù)庫的基本概念三、數(shù)據(jù)庫分類15.1數(shù)據(jù)庫基本概念
根據(jù)數(shù)據(jù)模型,即實現(xiàn)數(shù)據(jù)結構化所采用的聯(lián)系方式,數(shù)據(jù)庫可以分為層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關系數(shù)據(jù)庫。15.1數(shù)據(jù)庫基本概念根據(jù)數(shù)據(jù)模型,即實現(xiàn)數(shù)1.關系(表)在關系數(shù)據(jù)庫中,數(shù)據(jù)以關系的形式出現(xiàn),可以把關系理解成一張二維表(Table)。2.
記錄(行)每張二維表均由若干行和列構成,其中每一行稱為一條記錄(Record),3.
字段(列)二維表中的每一列稱為一個字段(Field),每一列均有一個名字,稱為字段名,各字段名互不相同。4.
主鍵關系數(shù)據(jù)庫中的某個字段或某些字段的組合定義為主鍵(PrimaryKey)。每條記錄的主鍵值都是唯一的,這就保證了可以通過主鍵唯一標識一條記錄。關系數(shù)據(jù)庫的有關概念
1.關系(表)關系數(shù)據(jù)庫的有關概念5.索引
為了提高數(shù)據(jù)庫的訪問效率,表中的記錄應該按照一定順序排列,通常建立一個較小的表——索引表,該表中只含有索引字段和記錄號。通過索引表可以快速確定要訪問記錄的位置。
5.索引15.2數(shù)據(jù)庫管理器1
建立數(shù)據(jù)庫VB提供了兩種方法建立數(shù)據(jù)庫,分別是:可視化數(shù)據(jù)管理器數(shù)據(jù)訪問對象(DAO)15.2數(shù)據(jù)庫管理器1建立數(shù)據(jù)庫VB提供了兩種方法建立
大型數(shù)據(jù)庫(如Oracle、Sybase等)不能在VisualBasic6.0中創(chuàng)建,要創(chuàng)建這些類型的數(shù)據(jù)庫,需要使用相應數(shù)據(jù)庫管理系統(tǒng)提供的工具來完成。VB6.0提供了創(chuàng)建MicrosoftAccess數(shù)據(jù)庫和其它一些數(shù)據(jù)庫的工具——“可視化數(shù)據(jù)管理器”。在VisualBasic開發(fā)環(huán)境內單擊“外接程序”菜單中的“可視化數(shù)據(jù)管理器”選項或在操作系統(tǒng)桌面上運行VisualBasic系統(tǒng)目錄中的Visdata.exe,都可打開可視化數(shù)據(jù)管理器。大型數(shù)據(jù)庫(如Oracle、Sybase等)不15.2數(shù)據(jù)庫管理器(Visdata)15.2數(shù)據(jù)庫管理器(Visdata)一、創(chuàng)建一個數(shù)據(jù)庫
(1)選擇“可視化數(shù)據(jù)管理器”中“文件”菜單中的“新建”菜單項用于創(chuàng)建數(shù)據(jù)庫,若選擇“打開數(shù)據(jù)庫”則用于打開一個已經建立好的數(shù)據(jù)庫。(2)選擇“MicrosoftAccess”菜單項,單擊該菜單項下的“Version7.0MDB”菜單項,打開如圖10-3所示的“選擇要創(chuàng)建的MicrosoftAccess數(shù)據(jù)庫”對話框。(3)選擇新建數(shù)據(jù)庫要保存的目錄后,在“文件名”文本框中輸入數(shù)據(jù)庫的名稱student,也就是數(shù)據(jù)庫的文件名稱。(4)單擊“確定”按鈕關閉對話框,“可視化數(shù)據(jù)管理器”開始在指定的目錄下創(chuàng)建以指定名稱命名的MicrosoftAccess數(shù)據(jù)庫,完成數(shù)據(jù)庫創(chuàng)建工作,一、創(chuàng)建一個數(shù)據(jù)庫(1)選擇“可15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)二、向數(shù)據(jù)庫中添加數(shù)據(jù)表
操作步驟為:(1)在“數(shù)據(jù)庫窗口”中右擊鼠標,系統(tǒng)彈出一快捷菜單,單擊其中的“新建表”菜單項,系統(tǒng)將打開“表結構”對話框。(2)在“表名稱”文本框中鍵入表名,這里鍵入名稱xjb。(3)單擊“添加字段”按鈕,系統(tǒng)顯示“添加字段”對話框,在這個對話框中定義表的字段。在“名稱”文本框中輸入字段名稱,這里輸入第一個字段“學號”的名稱“st_No”;單擊“類型”下拉列表框,從中選擇字段類型“Integer”;“大小”文本框用于指定Text類型字段的寬度,該長度限制了輸入到這個字段的文本字符的最大長度,選擇Text之外的數(shù)據(jù)類型時,不需要指定寬度。單擊“確定”按鈕,這樣我們就定義了xjb表的第一個字段。
二、向數(shù)據(jù)庫中添加數(shù)據(jù)表操作步驟為:15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)
15.2數(shù)據(jù)庫管理器(Visdata)三、數(shù)據(jù)表中數(shù)據(jù)的編輯
三、數(shù)據(jù)表中數(shù)據(jù)的編輯四、添加或刪除索引
四、添加或刪除索引五、使用查詢生成器
五、使用查詢生成器
一、數(shù)據(jù)控件的概念
數(shù)據(jù)控件(Data控件)是VisualBasic中最常見的控件,在工具箱中的圖標為,利用它可以在應用程序中訪問前面所創(chuàng)建的數(shù)據(jù)庫。數(shù)據(jù)控件不能顯示數(shù)據(jù),需要與數(shù)據(jù)綁定控件配合使用。
15.3數(shù)據(jù)控件一、數(shù)據(jù)控件的概念15.3數(shù)據(jù)控件二、數(shù)據(jù)控件常用屬性Connect屬性Connect屬性指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫類型。VisualBasic6.0提供了7種可訪問的數(shù)據(jù)庫類型,VisualBasic可識別的數(shù)據(jù)庫有:1)MicrosoftAccess的MDB文件(缺省值);2)BorlanddBASE、MicrosoftFoxpro的DBF文件;3)BorlandParadox的DB文件;4)NovellBtrieve的DDF文件;5)MicrosoftExcel的XLS文件;6)Lotus的WKS文件;7)OpenDataBaseConnectivity(ODBC)數(shù)據(jù)庫二、數(shù)據(jù)控件常用屬性Connect屬性Connect屬性指2.DatabaseName屬性DatabaseName屬性指定具體使用數(shù)據(jù)庫的名稱,包括所有的路徑名。如果連接的是單表數(shù)據(jù)庫,則DatabaseName屬性應設置為數(shù)據(jù)庫文件所在的子目錄名,而具體文件名放在RecordSource屬性中。如果在“屬性”窗口中單擊DatabasName屬性右邊的按鈕,會出現(xiàn)一個公用對話框用于選擇相應的數(shù)據(jù)庫。例如,下面語句設置了可訪問的數(shù)據(jù)庫名稱:如果連接一個MicrosoftAccess的數(shù)據(jù)庫C:\職員檔案.mdb,則Data1.DatabaseName=”C:\職員檔案.mdb”;如果連接一個Foxpro數(shù)據(jù)庫C:\yang\職員檔案1.dbf,因為Foxpro數(shù)據(jù)庫只含有一個表,則Data1.DatabaseName=”C:\yang”,RecordSource=”職員檔案1.dbf”。如果未寫數(shù)據(jù)庫文件的擴展名,則缺省情況下為使用以.mdb為擴展名的數(shù)據(jù)庫文件。2.DatabaseName屬性DatabaseName屬3、RecordSource屬性RecordSource屬性確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構成記錄集對象Recordset。4)RecordsetType屬性RecordsetType屬性確定記錄集類型。5)ReadOnly屬性在對數(shù)據(jù)庫只查看不修改時,通常將ReadOnly屬性設置為True,而在運行時根據(jù)一定的條件,響應一定的指令后,才將它設置為False。6)Exclusive屬性Exclusive屬性值設置為True時,則在通過關閉數(shù)據(jù)庫撤消這個設置前,其他任何人不能對數(shù)據(jù)庫訪問。這個屬性的缺省值是False。3、RecordSource屬性RecordSource屬性7)BOFAction、EOFAction屬性當BOFAction值為0,控件重定位到第一個記錄;BOFAction值為1,移過記錄集開始位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對第一個記錄的無效事件。當EOFAction值為0,控件重定位到最后一個記錄;當EOFAction值為1,移過記錄集結束位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對最后一個記錄的無效事件;EOFAction值為2,向記錄集加入新的空記錄,可以對新紀錄進行編輯,移動記錄指針新紀錄寫入數(shù)據(jù)庫。7)BOFAction、EOFAction屬性數(shù)據(jù)控件的常用方法1Refresh方法如果在設計狀態(tài)沒有為打開數(shù)據(jù)控件的有關屬性全部賦值,或當RecordSource在運行時被改變后,必須使用激活數(shù)據(jù)控件的Refresh方法激活這些變化。2UpdateCountrols方法UpdateCountrols方法可以將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到被數(shù)據(jù)控件綁定的空件內。使用UpdateCountrols方法終止用戶對綁定內控件的修改。3UpdateRecord方法當對綁定內的控件修改后,數(shù)據(jù)控件需要移動記錄集的指針才能保存修改,如果使用UpdateRecord方法可強制數(shù)據(jù)控件將綁定控件內的數(shù)據(jù)寫入到數(shù)據(jù)庫中而不再觸發(fā)Vaildate事件。在代碼中用該方法修改。數(shù)據(jù)控件的常用方法1Refresh方法如果在設計狀態(tài)沒有為數(shù)據(jù)控件的事件1Reposition事件Reposition事件發(fā)生在一條記錄成為當前記錄后。只要改變記錄集的指針使其從一條指針移到另一條記錄。會產生Reposition事件,可以在該事件過程中建立程序,可反映出記錄位置、記錄總數(shù)等。2Validate事件當要移動記錄指針前,修改與刪除記錄前或卸載含有數(shù)據(jù)控件的窗體時觸發(fā)Validate事件。Validate事件檢查被數(shù)據(jù)控綁定的控件內的數(shù)據(jù)是否發(fā)生變化。它通過save參數(shù)()True或False)判斷是否有數(shù)據(jù)發(fā)生變化,Action參數(shù)判斷哪一種操作觸發(fā)了Validate事件。Action參數(shù)可為表15-6中的值:數(shù)據(jù)控件的事件1Reposition事件RepositioRecordset對象代表一組與數(shù)據(jù)庫相關的邏輯記錄集合。它所對應的數(shù)據(jù)來源可以是數(shù)據(jù)表,也可以是和SQL語言中查詢語句(SELECT)有關的查詢結果。Recordset對象有三種類型:Table類型:記錄集為表集,可以顯示、添加、刪除和修改,具有較好的更新性能。Dynaset類型:記錄集為動態(tài)集,可以顯示、添加、刪除和修改,并具有較大的操作靈活性。Snapshot類型:記錄集為快照集,只能顯示,具有較好的顯示速度。RecordSet對象的屬性和方法Recordset對象代表一組與數(shù)據(jù)庫相關的邏輯記錄集合。它
◆記錄集Recordset的屬性
Recordset
是一個數(shù)據(jù)結構,通常用來表示從數(shù)據(jù)庫中提取的一個記錄集。在VB中只能通過Recordset對象對數(shù)據(jù)庫進行操作。(1)BOF和EOF屬性用來測試記錄指針是否已超出數(shù)據(jù)庫的首記錄或尾記錄。BOF屬性用來測試記錄指針是否超出文件頭;EOF屬性用來測試記錄指針是否超出文件尾。(1)BOF和EOF屬性
假設需要讀出數(shù)據(jù)庫中的全部記錄,可以使用Recordset的EOF屬性,程序如下:
DoWhileData1.Recordset.Eof=False依次讀出記錄記錄指針下移一個Loop
(2)AbsolutePosition屬性AbsolutePosition屬性用于反映記錄指針的當前位置。注意:AbsolutePosition屬性所反映出來的記錄指針的當前位置值比它的絕對位置的編號少1,假設當前位置十號記錄假設需要讀出數(shù)據(jù)庫中的全部記錄,可以使用Records由AbsolutePosition給出的值則是2。
(3)Bookmark屬性Bookmark屬性用于返回或設置當前記錄指針的書簽,其數(shù)據(jù)類型為String。在程序中可以用Bookmark屬性對記錄指針重新定位。
(4)RecordCount屬性RecordCount屬性用于測量數(shù)據(jù)庫的總記錄數(shù)。在多用戶情況下,由于Recordset對象的不斷變化,RecordCount測出的數(shù)據(jù)可能不準確。為了能得到準確的記錄總數(shù),在測量記錄總數(shù)時需要先將記錄指針移動到最后一個由AbsolutePosition給出的值則是2。記錄,語句如下:Data1.Recordset.MoveLast然后使用RecordCount屬性,Data1.Recordset.RecordCount這樣就能準確地得到當前記錄集的記錄總數(shù)了。
(5)Nomatch屬性Nomatch屬性用于判斷在使用Find方法和Seek方法做查詢操作時是否查詢到符合查詢條件的記錄,如果其返回值為True則表示沒有符合條件的記錄,反之則表示有相應記錄被找到記錄,語句如下:(5)Nomatch屬性對記錄的操作能夠通過Recordset對象的方法實現(xiàn)。其常用方法有:1)AddNew方法加入一條新記錄到記錄集內存緩沖區(qū)。2)Edit方法允許對當前記錄進行修改。3)Delete方法用于刪除當前記錄。4)Update方法把內存緩沖區(qū)的內容寫進數(shù)據(jù)庫文件,保存對數(shù)據(jù)庫所作的改動。5)Close方法關閉記錄集和數(shù)據(jù)庫。該方法也能用在數(shù)據(jù)庫對象上,將數(shù)據(jù)庫關閉。RecordSet對象的方法對記錄的操作能夠通過Recordset對象的方法實現(xiàn)。其常用5)Move方法使用Move方法可代替對數(shù)據(jù)庫控件對象的4個箭頭的操作遍歷整個記錄幾種的記錄。5種Move方法是:(1)MoveFirst方法移至第一條記錄(2)MoveLast方法移至最后一條記錄(3)MoveNext方法移至下一條記錄(4)MovePrevious方法移至上一條記錄(5)Move[n]方法向前或向后移動n條記錄,n為指定的數(shù)值。5)Move方法(6)Find方法可在指定的Dynaset或Snapshot類型的Recordset對象中查找與指定條件相符的一個記錄,并使之成為當前記錄。4種Find方法是:FindFirst或FindLast方法.找到滿足條件的第一個或最后一個記錄。FindNext或FindPrevious方法找到滿足條件的下一個或上一個記錄。4種Find方法的語法格式相同: 數(shù)據(jù)集合.Find方法條件(6)Find方法數(shù)據(jù)綁定控件要使文本等控件與數(shù)據(jù)控件捆綁在一起,成為數(shù)據(jù)控件的綁定控件。并且能夠受到數(shù)據(jù)庫約束,必須在運行時對這些控件的兩個屬性進行設置:1)DataSource屬性DataSource屬性用來將一個有效的數(shù)據(jù)控件與一個數(shù)據(jù)庫連接。2)DataFleld屬性DataFleld屬性設置數(shù)據(jù)庫有效的字段與綁定控件建立聯(lián)系。綁定控件、數(shù)據(jù)控件和數(shù)據(jù)庫三者的關系數(shù)據(jù)綁定控件要使文本等控件與數(shù)據(jù)控件捆綁在一起,成為數(shù)據(jù)控件SQL(結構化查詢語言,StructureQueryLanguage)是操作數(shù)據(jù)庫的工業(yè)標準語言,許多數(shù)據(jù)庫和軟件系統(tǒng)都支持SQL或提供SQL語言接口。這一節(jié)將向用戶介紹SQL的常用語句。1.SQL命令SQL的功能實際上包括查詢、操作、定義和控制四個方面。其中最常用的是查詢功能,其次為數(shù)據(jù)定義功能。SQL基本命令動詞SQL功能命令動詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操作INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKE15.6SQL語言SQL(結構化查詢語言,StructureQueryLaSQL語言的核心是查詢語句,它的基本格式為:SELECT<列名表名>FROM<基本表名或視圖名>[WHERE<條件表達式>=[GROUPBY<列名l>[HAVING內部函數(shù)表達式][ORDERBY<列名2>[ASC或DESC31SQL語言的核心是查詢語句,它的基本格式為:SELECT<列SQL在VB中的應用
1.使用SELECT語句查詢無論是數(shù)據(jù)控件還是數(shù)據(jù)對象都可使用SELECT語句查詢數(shù)據(jù)。例如用SQL語句顯示數(shù)據(jù)庫Biblio.mdb中出版日期為1996年全部記錄。Data1.RecordSource="SELECT*FROMTitlesWHERE[YearPublished]=1996"
用Data1.Refresh方法激活這些變化。選擇表中所有字段指定表Title構成查詢條件SQL在VB中的應用選擇表中所有字段指定表Title構成查詢SELECT語句可以看作記錄集的定義語句,它從一個或多個表中獲取指定字段,生成一個較小的記錄集。下面通過一組對前面建立的學生成績數(shù)據(jù)庫的查詢操作來學習SELECT語句的基本用法。(1)選取表中部分列。例如查詢學生成績表中的英語和計算機成績:SELECT英語,計算機FROMscore(2)選取表中所有列。例如查詢學生成績表中的所有信息:SELECT*FROMscore(3)WHERE子句。例如查詢數(shù)學成績不及格的學生信息:SELECT*FROMscoreWHERE數(shù)學<60(4)復合條件。例如查詢數(shù)學和英語成績均不及格的學生信息:SELECT*FROMscoreWHERE數(shù)學<60AND英語<60SELECT語句可以看作記錄集的定義語句,它從一個或多個表中(5)ORDERBY子句。例如查詢學生成績表中的所有數(shù)學成績及格的學生信息,并將查詢結果按數(shù)學成績降序排列(ASC表示升序,DESC表示降序):SELECT*FROMscoreWHERE數(shù)學>=60ORDERBY數(shù)學DESC(6)統(tǒng)計信息。例如查詢數(shù)學成績不及格的人數(shù)、數(shù)學平均分、最高分:SELECTCOUNT(*)AS人數(shù)FROMscoreWHERE數(shù)學<60SELECTAVG(數(shù)學)AS平均分,MAX(數(shù)學)AS最高分FROMscore(7)GROUPBY子句。例如查詢男生與女生的數(shù)學平均分:SELECT性別,AVG(數(shù)學)AS平均分FROMscoreGROUPBY性別(5)ORDERBY子句。例如查詢學生成績表中的所有數(shù)學成(8)HAVING子句。例如查詢數(shù)學成績不及格的人數(shù)大于10人的班級和相應人數(shù):SELECT班級,COUNT(*)AS人數(shù)FROMscoreWHERE數(shù)學<60GROUPBY班級HAVINGCOUNT(*)>10(9)多表查詢。例如查詢學生的學號、姓名和籍貫(假設有一個student表,其中包含了學生的學號、籍貫等信息):SELECTscore.學號,score.姓名,score.數(shù)學,student.籍貫FROMscore,studentWHEREscore.學號=student.學號如前所述,數(shù)據(jù)控件的RecordSource屬性除了可以設置成表名外,還可以設置為一條SQL語句,格式如下:數(shù)據(jù)控件名.RecordSource=“SQL語句”(8)HAVING子句。例如查詢數(shù)學成績不及格的人
在使用ADO據(jù)控件前,必須先通過“工程/部件”菜單命令選擇“MicrosoftADODatacontrol6.0(0LEDB)”選項,將ADO數(shù)據(jù)控件添加到工具箱。ADO數(shù)據(jù)控件與VisualBasic的內部數(shù)據(jù)控件很相似,它允許使用ADO數(shù)據(jù)控件的基本屬性快速地創(chuàng)建與數(shù)據(jù)庫的連接。1.ADO數(shù)據(jù)控件的基本屬性(1)ConnectionString屬性ADO控件沒有DatabaseName屬性,它使用Connectionstring屬性與數(shù)據(jù)庫建立連接。該屬性包含了用于與數(shù)據(jù)源建立連接的相關信息,Connectionstring屬性帶有4個參數(shù),如下表所示。參數(shù)描述Provide指定連接提供者的名稱FileName指定數(shù)據(jù)源所對應的文件名RemoteProvide在遠程數(shù)據(jù)服務器打開一個客戶端時所用的數(shù)據(jù)源名稱RemoteServer在遠程數(shù)據(jù)服務器打開一個主機端時所用的數(shù)據(jù)源名稱15.7Activex數(shù)據(jù)對象及其使用參數(shù)(2)RecordSource屬性RecordSource確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構成記錄集對象Recordset。該屬性值可以是數(shù)據(jù)庫中的單個表名,一個存儲查詢,也可以是使用SQL查詢語言的一個查詢字符串。(3)ConnectionTimeout屬性用于數(shù)據(jù)連接的超時設置,若在指定時間內連接不成功顯示超時信息。(4)MaxRecords屬性定義從一個查詢中最多能返回的記錄數(shù)。2.ADO數(shù)據(jù)控件的方法和事件ADO數(shù)據(jù)控件的主要方法和事件與Data控件的方法和事件一樣。3.設置ADO數(shù)據(jù)控件的屬性具體內容請參見教材。(2)RecordSource屬性下面是某公司人力資源部的認識數(shù)據(jù)庫管理系統(tǒng)的員工管理程序,其中實現(xiàn)了員工的增加、修改、刪除、查詢等功能。解析:首先建立如圖所示的用戶界面,并設置各個控件的屬性,然后編寫相應代碼。應用舉例下面是某公司人力資源部的認識數(shù)據(jù)庫管理系統(tǒng)的員工管理程序,其1-掌握數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng)的概念-2-掌課件DimmbookmarkAsVariant“第一個按”鈕的事件代碼PrivateSubCommand1_Click()IfNotData1.Recordset.BOFThenData1.Recordset.MovePreviousElseMsgBox"已到數(shù)據(jù)庫頭,無法再移動!",vbCritical,"數(shù)據(jù)庫"Data1.Recordset.MoveFirstEndIfMe.RefreshEndSub“下一個”按鈕的事件代碼PrivateSubCommand2_Click()IfNotData1.Recordset.EOFThenData1.Recordset.MovenextElseMsgBox"已到數(shù)據(jù)庫尾,無法再移動!",vbCritical,"數(shù)據(jù)庫"Data1.Recordset.MovelastEndIfMe.RefreshEndSubDimmbookmarkAsVariant“第一個”按鈕的事件代碼PrivateSub
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版道德與法治九年級下冊第二單元第三課《與世界緊相連第2框與世界深度互動》聽課評課記錄
- 2022版新課標七年級上冊道德與法治第五課交友的智慧2課時聽課評課記錄
- 人教版數(shù)學九年級上冊《直接開平方法解方程》聽評課記錄3
- 人教版地理八年級下冊7.1《自然特征與農業(yè)》聽課評課記錄
- 環(huán)境評估服務合同(2篇)
- 湘教版數(shù)學八年級上冊2.2《命題的證明》聽評課記錄2
- 北師大版道德與法治九年級上冊6.2《弘揚法治精神》聽課評課記錄
- 北京課改版歷史八年級上冊第10課《辛亥革命與中華民國建立》聽課評課記錄
- 湘教版數(shù)學七年級上冊《2.5整式的加法和減法(1)》聽評課記錄2
- 部編版八年級歷史上冊《第1課 鴉片戰(zhàn)爭》聽課評課記錄
- 2024年臨床醫(yī)師定期考核試題中醫(yī)知識題庫及答案(共330題) (二)
- 2025-2030年中國反滲透膜行業(yè)市場發(fā)展趨勢展望與投資策略分析報告
- 湖北省十堰市城區(qū)2024-2025學年九年級上學期期末質量檢測道德與法治試題 (含答案)
- 山東省濰坊市2024-2025學年高三上學期1月期末 英語試題
- 春節(jié)節(jié)后收心會
- 《榜樣9》觀后感心得體會四
- 七年級下冊英語單詞表(人教版)-418個
- 2025年山東省濟寧高新區(qū)管委會“優(yōu)才”招聘20人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年中國社會科學評價研究院第一批專業(yè)技術人員招聘2人歷年高頻重點提升(共500題)附帶答案詳解
- 交警安全進校園課件
- (2024年高考真題)2024年普通高等學校招生全國統(tǒng)一考試數(shù)學試卷-新課標Ⅰ卷(含部分解析)
評論
0/150
提交評論