《數(shù)據(jù)庫技術》PPT課件.ppt
《《數(shù)據(jù)庫技術》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《數(shù)據(jù)庫技術》PPT課件.ppt(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第十一章VisualBasic與數(shù)據(jù)庫,11.1數(shù)據(jù)庫概念11.2數(shù)據(jù)庫管理器11.3ADO數(shù)據(jù)控件11.4記錄集對象*11.5結構化查詢語言(SQL)*11.6報表制作,11.1數(shù)據(jù)庫概念,數(shù)據(jù)庫就是一組排列成易于處理和讀取的相關信息的集合。關系模型已經(jīng)成為數(shù)據(jù)庫設計事實上的標準。,關系型數(shù)據(jù)庫模型,一個數(shù)據(jù)庫可以由多個表組成,表與表之間可以用不同的方式相互關聯(lián)。若第一個表中的一條記錄內(nèi)容與第二個表中多條記錄的數(shù)據(jù)相符,但第二個表中的一條記錄只能與第一個表的一條記錄的數(shù)據(jù)相符,這樣的表間關系類型叫做一對多關系。,若第一個表的一條記錄的數(shù)據(jù)內(nèi)容可與第二個表的多條記錄的數(shù)據(jù)相符,反之亦然,這樣的表間關系類型叫做多對多關系。,一對多關系,可以將一個或幾個表中的數(shù)據(jù)構成記錄集Recordset對象,記錄集也由行和列構成,它與表類似。,在VB中數(shù)據(jù)庫內(nèi)的表格不允許直接訪問,而只能通過記錄集對象進行記錄的操作和瀏覽,因此,記錄集是一種瀏覽數(shù)據(jù)庫的工具。,11.2數(shù)據(jù)庫管理器,VB的數(shù)據(jù)庫管理器(Visdata.exe)可用于管理數(shù)據(jù)庫。在VB開發(fā)環(huán)境內(nèi)單擊外接程序菜單中的可視化數(shù)據(jù)管理器命令可打開可視數(shù)據(jù)管理器。,數(shù)據(jù)庫管理器使用小結:1.建立新表:鼠標右鍵單擊數(shù)據(jù)庫窗口,彈出菜單,選擇對應命令。2.打開、刪除表,修改表結構和建立表間的關聯(lián)等操作:右鍵單擊數(shù)據(jù)庫窗口內(nèi)的表名,彈出菜單,選擇對應命令。3.編輯記錄:雙擊表名,打開表格輸入窗,編輯、增刪記錄。,建立Student.mdb數(shù)據(jù)庫,所含學生基本情況表結構如下:,11.3ADO數(shù)據(jù)控件,ADO是Microsoft處理數(shù)據(jù)庫信息的最新技術,它是一種ActiveX對象,采用了被稱為OLEDB的數(shù)據(jù)訪問模式。它是數(shù)據(jù)訪問對象DAO、遠程數(shù)據(jù)對象RDO和開放數(shù)據(jù)庫互連ODBC三種方式的擴展。ADO對象模型更為簡化,不論是存取本地的還是遠程的數(shù)據(jù),都提供了統(tǒng)一的接口。,11.3.1使用ADO數(shù)據(jù)控件,在使用ADO數(shù)據(jù)控件前,必須先通過“工程/部件”菜單命令選擇“MicrosoftADODataControl6.0(OLEDB)”選項,將ADO數(shù)據(jù)控件添加到工具箱。ADO數(shù)據(jù)控件與VisualBasic的內(nèi)部數(shù)據(jù)控件很相似,它允許使用ADO數(shù)據(jù)控件的基本屬性快速地創(chuàng)建與數(shù)據(jù)庫的連接。,1、引例,例題:編寫一個簡單的數(shù)據(jù)庫程序,設計一個窗體,用網(wǎng)絡形式瀏覽student.mdb數(shù)據(jù)庫中“基本情況”表的內(nèi)容。,先通過“工程/部件”菜單命令選擇“MicrosoftADODataControl6.0(OLEDB)”選項,將ADO數(shù)據(jù)控件添加到工具箱,工具箱內(nèi)ADO控件圖標形狀,畫在窗體上的外觀,1)數(shù)據(jù)源連接①選擇數(shù)據(jù)源連接方式連接操作------鼠標右擊ADO控件,選擇快捷菜單“ADODC屬性”命令,打開ADO控件屬性頁窗:,三種數(shù)據(jù)源連接方式,,②選擇數(shù)據(jù)庫類型,③指定數(shù)據(jù)庫文件名,設置完成后,ADO控件的ConnectionString屬性為:Provider=Microsoft.Jet.OLEDB.3.51;PersistSecurityInfo=False;DataSource=Student.mdbRecordSource屬性為:基本情況(表),④指定記錄源,2)用DataGrid控件顯示數(shù)據(jù),將該控件的DataSource屬性設置成Adodc1控件,將數(shù)據(jù)網(wǎng)格控件綁定到指定的記錄集。運行后如下圖。,2、ADO數(shù)據(jù)控件訪問數(shù)據(jù)庫過程,使用ADO數(shù)據(jù)控件建立與數(shù)據(jù)庫的連接使用命令對象對數(shù)據(jù)庫發(fā)出SQL命令,從數(shù)據(jù)庫中選擇數(shù)據(jù)構成記錄集應用程序?qū)τ涗浖M行操作記錄集:表示的是內(nèi)存中來自表或命令執(zhí)行的結果的集合,它也由記錄(行)和字段(列)構成,可以把它當作一個表來進行操作。,ADO控件屬性:,與數(shù)據(jù)庫的連接及從數(shù)據(jù)庫中選擇數(shù)據(jù)構成記錄集,其核心是設置ADO控件的三個基本屬性:ConnectionString屬性該屬性是一個字符串,包含了用于與數(shù)據(jù)源建立連接的相關信息。如:Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Student.mdb",RecordSource屬性RecordSource屬性設置要鏈接的表或者SQL查詢語句??梢栽凇皩傩浴贝翱谥袑ⅰ坝涗浽础睂傩栽O置為一個SQL語句。如Adodc1.RecordSource="基本情況“Adodc1.RecordSource="select*from基本情況“,CommandType屬性CommandType屬性用于指定RecordSource屬性的取值類型。adCmdUnknown:默認值。CommandText屬性中的命令類型未知,常設為SQL語句。adCmdTable:設置為單個表名。adCmdText:設置為命令文本,通常使用SQL語句。adCmdStoreProc:設置為存儲過程名。如:Adodc1.CommandType=adCmdTableAdodc1.CommandType=adCmdUnknown‘記得要用Adodc1.Refresh,刷新來顯示記錄,Recordset屬性產(chǎn)生ADO控件實際可操作的記錄集對象。記錄集對象中的每個字段值用Recordset.Fields(“字段名”)獲得。,BOFAction和EOFAction屬性當移動數(shù)據(jù)庫記錄指針時,如果記錄指針移動到BOF或EOF位置后,再向前或向后移動記錄指針將發(fā)生錯誤。BOFAction和EOFAction屬性指定當發(fā)生上述錯誤時,數(shù)據(jù)控件采取什么樣的操作。BOFAction屬性有兩個可選常量:1)adDoMoveFirst:移動記錄指針到第一個記錄。2)adStayBOF:移動記錄指針到記錄的開始。記錄指針移動到記錄的開始位置時將引發(fā)數(shù)據(jù)控件的Validate事件和Reposition事件,這時可編寫程序代碼確定要執(zhí)行的操作。EOFAction屬性有三個可選常量:1)adDoMoveLast:移動記錄指針到最后一個記錄。2)adStayEOF:移動記錄指針到記錄的結尾,同樣可利用它所引發(fā)的事件編寫程序代碼。3)adDoAddNew:當記錄指針移動到文件尾部時,引發(fā)數(shù)據(jù)控件的Validate事件,然后自動執(zhí)行AddNew方法添加新記錄,并在新記錄上引發(fā)Reposition事件。,ADO數(shù)據(jù)控件的方法和事件,Refresh方法該方法用于刷新ADO數(shù)據(jù)控件的連接屬性,并能重建記錄集對象。當在運行狀態(tài)改變ADO數(shù)據(jù)控件的數(shù)據(jù)源連接屬性后,必須使用該方法激活這些變化。WillMove和MoveComplete事件當用某種方法改變記錄集的指針使其從一條記錄移到另一條記錄時,會產(chǎn)生WillMove事件,如使用ADO控件上的按鈕移動記錄位置時。WillComplete事件發(fā)生在一條記錄成為當前記錄后,它出現(xiàn)在WillMove事件之后。,11.3.2ADO控件上綁定控件的使用,1、數(shù)據(jù)綁定綁定控件通過ADO數(shù)據(jù)控件使用記錄集內(nèi)的數(shù)據(jù),再由ADO控件將記錄集連接到數(shù)據(jù)庫中的數(shù)據(jù)表。需要對控件的兩個屬性進行設置:DataSource屬性:通過指定一個有效的ADO數(shù)據(jù)控件將綁定控件與其建立聯(lián)系。DataField屬性:設置記錄集中有效的字段使綁定控件與其建立聯(lián)系。,2、簡單數(shù)據(jù)綁定簡單綁定就是將控件綁定到單個數(shù)據(jù)字段。例題:設計一個窗體,用以瀏覽Student.mdb數(shù)據(jù)庫中“基本情況”表的內(nèi)容,3、復雜數(shù)據(jù)綁定允許將多個數(shù)據(jù)字段綁定到一個控件中,同時顯示記錄集中的多行或多列。支持該綁定的控件有:數(shù)據(jù)網(wǎng)格控件DataGrid和MSHFGrid、數(shù)據(jù)列表框DataList和數(shù)據(jù)組合框DataCombo等。例題:通過單擊不同的按鈕在數(shù)據(jù)網(wǎng)格中顯示Student.mdb數(shù)據(jù)庫中基本情況表或成績表的內(nèi)容。,11.4記錄集對象,在VB中不允許對數(shù)據(jù)庫中的表直接訪問,只能通過記錄集對象RecordSet對記錄進行瀏覽和操作。對記錄集的修改最終會傳給原始表。11.4.1瀏覽記錄集1、屬性AbsoloutPostion屬性返回當前記錄指針值,如:第N條記錄的AbsoloutPostion屬性值為n。RecordCount屬性對記錄集對象中的記錄計數(shù),該屬性為只讀屬性。,BOF和EOF屬性,Eof,,Bof,RecordCount,,,當記錄指針在首記錄之前時,BOF為”true”,否則為“false”當記錄指針在最后一條記錄之后時,EOF為”true”,否則為“false”當前指針位于BOF,AbsoloutPostion返回-2,當前指針位于EOF,AbsoloutPostion返回-3當記錄集為空,AbsoloutPostion返回-1,2、方法Find方法該方法可在記錄集對象中查找符合條件的第一條記錄,并使之成為當前記錄。若沒有找到,按搜索方向,指停在記錄集的末尾處或起始位置前。格式為:Recordset.Find搜索條件[,[位移],[搜索方向],[起始位置]]說明:搜索條件:是一個字符串,包含用于搜索的字段名、比較運算符和數(shù)據(jù)。如:adodc1.Recordset.find“學號=‘990001’”當使用Like運算符時,常量值可以用“*”代表多個字符,實現(xiàn)模糊查詢。位移:指定從開始位置位移n條記錄后開始搜索,默認值為0。搜索方向:其值為adSearchForward(向記錄集尾部)或adSearchBackward(向記錄集開始)起始位置:指定搜索的起始位置。缺省時從當前位置開始搜索。,Move方法組該方法可實現(xiàn)數(shù)據(jù)控件4個箭頭按鈕的操作。5種Move方法為:MoveFirst(看圖)MoveNextMovePreviousMoveLastMove[n]從當前記錄向前(-n)或向后(+n)移n條記錄。例題,,11.4.2記錄集的編輯,1、數(shù)據(jù)編輯方法編輯主要指增加、刪除、修改操作,涉及4個方法:AddNew方法:在記錄集中增加一個空行。Delete方法:刪除記錄集中的當前記錄。Update方法:確定所做的修改并保存到數(shù)據(jù)源中。CancelUpdate方法:取消未調(diào)用Uptate方法前對記錄集所做的所有修改。,2、增加記錄調(diào)用AddNew方法給各字段賦值調(diào)用Update方法。3、刪除記錄定位要被冊除的記錄,為當前記錄調(diào)用Delete方法移動記錄指針。4、修改記錄當改變數(shù)據(jù)項的內(nèi)容時,ADO控件自動進入編輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的指針或調(diào)用Update方法,即可確定所做的修改。,例題:在上題中加入增、刪、改功能。,11.4.3查詢和統(tǒng)計,在實現(xiàn)查詢功能時,要設置ADO控件的ConnectionString屬性值,并將CommandType屬性值設置為AdCmdUnknown,RecordSource屬性設置為SQL語句,用Refresh方法激活。例如:根據(jù)輸入的專業(yè)名稱,在網(wǎng)絡內(nèi)顯示基本情況表中該專業(yè)的所有學生記錄。,為了減少專業(yè)名稱輸入的麻煩,可以用數(shù)據(jù)列表框DataList或數(shù)據(jù)組合框來代替文本框。例題:在數(shù)據(jù)列表框中顯示專業(yè)名稱,根據(jù)選定的專業(yè)在網(wǎng)格內(nèi)顯示該專業(yè)所有學生。說明:數(shù)據(jù)列表框內(nèi)所要顯示的數(shù)據(jù)由RowSource和listfield屬性決定。BoundColumn為列表框傳遞出來的數(shù)據(jù)源字段(具體內(nèi)容由BoundText屬性提供。)RowSource=Adodc1listfield=“專業(yè)”,統(tǒng)計,在實現(xiàn)統(tǒng)計時,仍用到SQL的函數(shù)和分組功能來實現(xiàn)。例題:設計一個程序,統(tǒng)計各專業(yè)的人數(shù)、年齡分布。,11.4.4BLOB數(shù)據(jù)處理,二進制大型對象(BLOB)是指任何需要存入數(shù)據(jù)庫的隨機大塊字節(jié)流數(shù)據(jù),例如圖形、聲音,也可以是一個word文檔。1、把BLOB數(shù)據(jù)寫入數(shù)據(jù)庫ADO的AppendChunk方法用于將BLOB數(shù)據(jù)寫入到數(shù)據(jù)庫的二進制字段內(nèi)。ADO對象.Recordset.fileds(字段).AppendChunkData其中參數(shù)Data包含加入到數(shù)據(jù)庫的BLOB數(shù)據(jù)。例如:,處理步驟如下:用二進制訪問方式打開BLOB數(shù)據(jù)文件如:Open文件路徑ForBinaryAs#1定義一個字節(jié)類型的數(shù)組,數(shù)組大小為文件大小如Dimst()AsByteReDimst(LOF(1))將文件保存到數(shù)組如Get#1,,st使用ADO對象的AppendChunk方法寫入數(shù)據(jù)庫。如:Adodc1.Recordset.Fields("照片").AppendChunkst,,例如:將圖片寫入到基本情況表中的一條記錄的“照片”字段中,2、從數(shù)據(jù)庫中讀出BLOB數(shù)據(jù)使用ADO的GetChunk方法.變量=ADO對象.Recordset.fileds(字段).GetChunk(size)其中參數(shù)size為長整型表達式,讀取字段內(nèi)的數(shù)據(jù)的字節(jié)數(shù)。若size大于數(shù)據(jù)的實際長度,則GetChunk方法僅返回數(shù)據(jù),而不填充空白。若字段為空,則GetChunk方法返回null。每個后續(xù)的GetChunk方法調(diào)用將檢索從前一次GetChunk調(diào)用停止處開始的數(shù)據(jù)。例如,處理步驟如下:,用記錄集的ActualSize屬性取出記錄的圖片字段實際大小如:c=Adodc1.Recordset.Fields("照片").ActualSize定義一個字節(jié)數(shù)組,數(shù)據(jù)大小為圖片字段實際大小如:Dima()asbyteReDima(c)使用ADO對象的AppendChunk方法將字段值存入字節(jié)數(shù)組中。如:a=Adodc1.Recordset.Fields("照片").GetChunk(c)用二進制方式打開文件,并將字節(jié)數(shù)組寫入到打開的文件中。如:Open"d:\pic.jpg"ForBinaryAs#1Put#1,,aClose#1,11.4.4使用數(shù)據(jù)窗體向?qū)?通過數(shù)據(jù)窗體向?qū)芙⒁粋€訪問數(shù)據(jù)的窗口。在使用前必須執(zhí)行“外接程序/外接程序管理器”命令,將“VB6數(shù)據(jù)窗體向?qū)А毖b入到“外接程序”菜單中。步驟1:執(zhí)行“外接程序”菜單中的“數(shù)據(jù)窗體向?qū)А泵?步驟2:選擇數(shù)據(jù)庫類型。,步驟3:選擇具體的數(shù)據(jù)庫文件。,步驟4:設置應用窗體的工作特性。,步驟5:選擇記錄源(所需要的實際數(shù)據(jù))。,步驟6:選擇所需要的操作按鈕。,例11.6,11.5結構化查詢語言(SQL),11.5.1結構化查詢語言,結構化查詢語言SQL是操作數(shù)據(jù)庫的工業(yè)標準語言。在SQL語言中,指定要做什么而不是怎么做。不需要告訴SQL如何訪問數(shù)據(jù)庫,只要告訴SQL需要數(shù)據(jù)庫做什么。利用SQL,可以確切指定想要檢索的記錄以及按什么順序檢索??梢栽谠O計或運行時對數(shù)據(jù)控件使用SQL語句。用戶提出一個查詢,數(shù)據(jù)庫返回所有與該查詢匹配的記錄。,這些函數(shù)可以用在SELECT短語中對查詢結果進行計算,11.5.2使用SELECT語句查詢,1.使用SELECT語句從數(shù)據(jù)庫中的獲取數(shù)據(jù)稱為查詢數(shù)據(jù)庫,查詢數(shù)據(jù)庫通過使用SELECT語句。常見的SELECT語句形式為:SELECT字段列表FROM表列表[WHERE][GROUPBY….][HAVING][ORDERBY…]可以在設計或代碼中對數(shù)據(jù)控件的RecordSource屬性設置SQL語句,也可將SQL語句賦予對象變量。在建立SQL語句時,如果需要通過變量構造條件,則需要在應用程序中將變量連接到SELECT語句。例如:Select*From基本情況Where專業(yè)=”物理",SELECT:說明要查詢的數(shù)據(jù)FROM:說明要查詢的數(shù)據(jù)來自哪個或哪些表,可以對單個表或多個表進行查詢;WHERE:說明查詢條件,即選擇元組的條件;后可用一些運算如inLIKE匹配符%:表示0個或多個字符匹配符:_:表示一個字符GROUPBY:短語用于將查詢結果按一列或多列分組,如果未對查詢結果分組,命令將作用于整個查詢結果.分組后函數(shù)集將作用于每一個組.HAVING:短語必須跟隨GROUPBY短語使用,它用來限定分組必須滿足的條件;,1、簡單查詢:只有select和from子句①select學號,姓名,專業(yè)from基本情況②select*from基本情況2、由SELECT-FROM-WHERE短語構成條件查詢③select*from基本情況where專業(yè)=物理‘④select*from基本情況where出生年月>#1982/12/31#⑤select*from基本情況where出生年月#1981/12/31#⑥select*from基本情況where專業(yè)in(‘‘物理’’,‘‘數(shù)學’)⑦select*from基本情況where學號like9901%,例如:,3、用于計算檢索的函數(shù)有:(1)COUNT----計數(shù)(2)SUM----求和(3)AVG----計算平均值(4)MAX----求最大值(5)MIN----求最小值這些函數(shù)可以用在SELECT短語中對查詢結果進行計算⑧selectcount(*)from基本情況⑨selectmax(出生年月)from基本情況4、分組與計算查詢GROUPBYGroupColumn[,GroupColumn…][HAVINGFilterCondition]⑩select專業(yè),count(*)as人數(shù)from基本情況groupby專業(yè)⑾select專業(yè),max(出生年月)from基本情況groupby專業(yè),,5、多表連接查詢Select目標表達式from表1,表2where表1.字段=表2.字段⑿select基本情況.姓名,學生成績表.成績_from基本情況,學生成績表_where基本情況.學號=學生成績表.學號,*11.5.4ADO對象,使用ADO對象訪問數(shù)據(jù)庫比DAO對象模型更為簡化,不論是存取本地的還是遠程的數(shù)據(jù),都提供了統(tǒng)一的接口。,11.6報表制作,數(shù)據(jù)報表設計器屬于ActiveXDesigner組中的一個成員,在使用前需要執(zhí)行“工程|添加DataReport”命令,將報表設計器加入到當前工程中,產(chǎn)生一個DataReport1對象,并在工具箱內(nèi)產(chǎn)生一個“數(shù)據(jù)報表”標簽。,“標簽”控件在報表上放置靜態(tài)文本“文本”控件在報表上連接并顯示字段的數(shù)據(jù)“圖形”控件可在報表上添加圖片“線條”控件在報表上繪制直線“形狀”控件在報表上繪制各種各樣的圖形外形“函數(shù)”控件在報表上建立公式。報表標頭區(qū)包含整個報表最開頭的信息,一個報表只有一個報表頭,可使用“標簽”控件建立報表名報表注腳區(qū)包含整個報表尾部的信息,一個報表也只有一個注腳區(qū)頁標頭區(qū)設置報表每一頁頂部的標題信息;頁注腳區(qū)包含每一頁底部的信息;細節(jié)區(qū)包含報表的具體數(shù)據(jù),細節(jié)區(qū)的高度將決定報表的行高。,例11.12建立新工程,在窗體上放置兩個命令按鈕。在當前工程內(nèi)加入一個DataEnvironent1對象。完成與指定數(shù)據(jù)庫的連接。在Connection1下創(chuàng)建Command1對象。在當前工程中加入報表設計器DataReport1,設置報表設計器的DataSource屬性為數(shù)據(jù)環(huán)境對象,DataMember屬性為Command1對象。將數(shù)據(jù)環(huán)境設計器中Command1對象內(nèi)的字段拖動到數(shù)據(jù)報表設計器的細節(jié)區(qū)。使用“標簽”控件,在報表標頭區(qū)插入報表名,頁標頭區(qū)設置報表每一頁頂部的標題信息等。使用“線條”控件在報表內(nèi)加入直線,使用“圖形”控件和“形狀”控件加入圖案或圖形。在命令按鈕Click事件內(nèi)加入代碼DataReport1.Show顯示報表,DataReport1.PrintReport打印報表。,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 數(shù)據(jù)庫技術 PPT 課件
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
相關搜索
鏈接地址:http://www.820124.com/p-3170979.html