數(shù)據(jù)庫的基本應用_第1頁
數(shù)據(jù)庫的基本應用_第2頁
數(shù)據(jù)庫的基本應用_第3頁
數(shù)據(jù)庫的基本應用_第4頁
數(shù)據(jù)庫的基本應用_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第11章數(shù)據(jù)庫的基本應用第11章數(shù)據(jù)庫的基本應用11.1數(shù)據(jù)庫概述1

11.2VisualBasic的數(shù)據(jù)訪問技術211.3通過數(shù)據(jù)管理器訪問數(shù)據(jù)庫311.4使用DAO訪問數(shù)據(jù)庫

4第11章數(shù)據(jù)庫的基本應用11.5使用ADO訪問數(shù)據(jù)庫511.6數(shù)據(jù)環(huán)境設計器611.7數(shù)據(jù)報表的制作711.8綜合實例811.1.1數(shù)據(jù)庫基本概念1.數(shù)據(jù)庫系統(tǒng)的組成數(shù)據(jù)庫是信息時代的產物,是大量信息管理和處理的必須。人們通過數(shù)據(jù)庫可以方便地使用、查找所需要的信息。一個完整的數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)由數(shù)據(jù)庫(DataBase)、數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)、數(shù)據(jù)庫應用系統(tǒng)、數(shù)據(jù)庫管理員(DataBaseAdministrator,簡稱DBA)以及用戶組成。數(shù)據(jù)庫(DB)數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)庫應用程序數(shù)據(jù)庫系統(tǒng)11.1數(shù)據(jù)庫概述12.數(shù)據(jù)庫的分類:按照數(shù)據(jù)的組織形式可以將數(shù)據(jù)庫分為層次型、網(wǎng)狀型以及關系型結構。其中最常見的是關系型數(shù)據(jù)庫。3.關系數(shù)據(jù)庫的基本概念關系(表)記錄(行)字段(列)主鍵索引數(shù)據(jù)庫11.1數(shù)據(jù)庫概述1學號姓名性別編號(外鍵)2008011001張三12008021002王五2性別名性別編號(主鍵)男1女211.1.2SQL數(shù)據(jù)查詢SQL是StructuredQueryLanguage(結構化查詢語言)的縮寫,是最重要的關系數(shù)據(jù)庫操作語言。1986年ANSI和ISO頒布了SQL正式標準,確認SQL為數(shù)據(jù)庫操作的標準語言。SQL語言基本上獨立于具體的數(shù)據(jù)庫,獨立于所使用的計算機、網(wǎng)絡與操作系統(tǒng)。不同的DBMS對SQL語言的支持與標準的ANSISQL有些細微的不同。SQL的功能包括查詢、操作、定義和控制4個方面,其核心功能的命令動詞如表所示。

11.1數(shù)據(jù)庫概述1SQL功能命令動詞數(shù)據(jù)定義Create,Alter,Drop數(shù)據(jù)操縱Insert,Update,Delete數(shù)據(jù)控制Grant,Revoke數(shù)據(jù)查詢Select(1)CreateTable語句格式:CreateTable<表名>[(<列名>類型[<長度>][notnull][<primarykey>]

[,<列名>類型[<長度>][notnull][<primarykey>]

……])功能:創(chuàng)建一個新表。示例:CreateTable性別表(性別名Integernotnullprimarykey,性別編號char(10))(2)AlterTable語句格式:AlterTable<表名>(Add<列名>類型,或者dropcolumn<列名>)功能:修改表結構。示例:AlterTable性別表add說明char(15)

AlterTable性別表dropcolumn說明11.1數(shù)據(jù)庫概述1(3)DropTable語句格式:DropTable<表名>功能:刪除表。示例:DropTable性別表(4)Insert語句格式:InsertInto<表名>[(<列名>[,<列名>]……)]Values(<常量>[,<常量>]……)功能:添加新的記錄到表中。示例:InsertInto性別表(性別名,

性別編號)Values(1,”女”)11.1數(shù)據(jù)庫概述1(5)Update語句格式:Update表名Set<列名>=<表達式>[,<列名>=<表達式>]……[Where<條件>]功能:對合乎條件的記錄,改變其中一個或多個字段(列)值。示例:Update性別表Set性別名=”男”

Where性別編號=1(6)Delete語句格式:DeleteFrom<表名>[Where<條件>]功能:刪除表中記錄。若無Where子句則刪除表中全部數(shù)據(jù)但表仍存在。示例:DeleteFrom性別表Where性別編號=111.1數(shù)據(jù)庫概述1(7)Select語句格式:Select[Distinct]<字段名表>From<表名>[,<表名>][Where<條件表達式>][GroupBy<字段名>[Having<條件表達式>]][OrderBy<字段名>[Asc/Desc]]功能:在數(shù)據(jù)表中進行數(shù)據(jù)檢索。各分句作用說明:

11.1數(shù)據(jù)庫概述1子句作用Select指定要查看的字段From指定要從中檢索的表Where指定選擇的標準GroupBy把所選擇的記錄分組Having分組的提取條件OrderBy指定查詢所得記錄的排序方式示例1:顯示學生的學號,姓名,性別,并且按照性別排序。Select學號,姓名,性別名稱From學生表,性別表Where學生表.性別編號=性別表.性別編號Orderby性別編號示例2:計算學生表中男生和女生人數(shù),并輸出女生的人數(shù)。

SelectCount(*)

as學生人數(shù)From學生表,性別表

Where學生表.性別編號=性別表.性別編號GroupBy性別表.性別編號Having性別編號=211.1數(shù)據(jù)庫概述1在VisualBasic中數(shù)據(jù)訪問的過程主要分為三個階段,首先通過數(shù)據(jù)庫訪問組件通過數(shù)據(jù)訪問接口連接數(shù)據(jù)庫,然后在窗體中將窗體控件與數(shù)據(jù)庫的訪問組件相連,最后,窗體控件通過數(shù)據(jù)庫訪問組件提供的方法或者對從數(shù)據(jù)庫訪問組件中返回的數(shù)據(jù)集進行處理,并返回給數(shù)據(jù)庫庫組件,以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的處理。VisualBasic擁有豐富多樣的數(shù)據(jù)處理方式,為每種類型的數(shù)據(jù)庫訪問技術都提供了相應的數(shù)據(jù)訪問接口,各種數(shù)據(jù)庫訪問組件如何通過不同的數(shù)據(jù)訪問接口連接數(shù)據(jù)庫,將在以下的小節(jié)分別詳細介紹。以下章節(jié)主要介紹四種數(shù)據(jù)訪問方式:11.3通過數(shù)據(jù)管理器訪問數(shù)據(jù)庫11.4使用DAO訪問數(shù)據(jù)庫11.5使用ADO訪問數(shù)據(jù)庫11.6數(shù)據(jù)環(huán)境設計器

11.2VisualBasic的數(shù)據(jù)訪問技術2在VB中自帶一些“自動編程”的工具,其中就有一個名叫“數(shù)據(jù)管理器(DataManager”的應用程序-Visdata.exe,它是基于DAO數(shù)據(jù)訪問對象模型設計的,可在VB開發(fā)環(huán)境中啟動,也可以獨立運行。凡是和VisualBasic有關的數(shù)據(jù)庫的基本操作,例如數(shù)據(jù)庫結構的建立、記錄的添加和修改都可以利用這個工具完成。在VB的專業(yè)版中提供了這個程序的源程序,它的工程文件名是VISDATA.VBP。與VB同時發(fā)行的還有一個基于ADO的插件,名叫“數(shù)據(jù)窗體模版”(DFW,DataFormWinzard),使用這個插件,用戶只需選擇一個數(shù)據(jù)庫和一個數(shù)據(jù)表,DFW就可以自動生成對此數(shù)據(jù)表進行增、刪、改和瀏覽的窗體。使用可視化數(shù)據(jù)管理器建立數(shù)據(jù)庫的過程分為3步:第一步建立數(shù)據(jù)庫結構;第二步添加表到數(shù)據(jù)庫中;第三步向表中輸入數(shù)據(jù)。11.3通過數(shù)據(jù)管理器訪問數(shù)據(jù)庫3例11?1通過可視化數(shù)據(jù)管理器創(chuàng)建一個名稱為“選課”的Access的數(shù)據(jù)庫,其中包含一個“性別表”的表格。表格的結構見表11?3,數(shù)據(jù)見表11?4。11.3通過數(shù)據(jù)管理器訪問數(shù)據(jù)庫3表11?3性別表結構字段名稱數(shù)據(jù)類型性別編號INT性別名稱Text(10)表11?4性別表數(shù)據(jù)性別編號性別名稱1男2女11.4.1DAO對象模型使用數(shù)據(jù)訪問對象編程包括兩個部分:一是創(chuàng)建對象變量,二是通過設置對象的屬性,調用對象的方法來操作它們。1.DAO對象的創(chuàng)建2.DAO數(shù)據(jù)訪問對象的常用方法(1)SetDataBase方法功能:以指定的方式打開數(shù)據(jù)庫。格式:Set數(shù)據(jù)庫=工作區(qū)..OpenDataBase(數(shù)據(jù)庫名,打開方式,讀寫方式,連接方式)(2)SetRecordset方法功能:從數(shù)據(jù)庫中讀取數(shù)據(jù)賦給指定記錄。格式:SetRecordset=數(shù)據(jù)庫名(表文件名,打開方式,表字段類型,鎖定字段列表)(3)MoveFirst、MovePrevious、MoveNext、MoveLast、AddNew、Delete、BOF、EOF與Data控件方法相同。11.4使用DAO訪問數(shù)據(jù)庫

411.4.2Data控件Data控件是VisualBasic的標準控件之一,可以直接從工具箱中加入窗體,在工具箱中的圖標為。1.數(shù)據(jù)控件的常用屬性(1)Connect:指定Data控件所連接的數(shù)據(jù)庫類型,默認的屬性值是Access。(2)DatabaseName:選擇要訪問的數(shù)據(jù)庫文件。(3)RecordSource:確定要訪問的數(shù)據(jù)源。11.4使用DAO訪問數(shù)據(jù)庫

4

例11?2利用Data控件連接Access數(shù)據(jù)庫,假設數(shù)據(jù)庫為“選課.mdb”存放在C盤根目錄,其中包含一個表為“專業(yè)表”。Data1.Connect=”Access”Data1.DataBaseName=”c:\選課.mdb”Data1.RecordSource=”專業(yè)表”或者Data1.Connect=”Access”Data1.DataBaseName=”c:\選課.mdb”Data1.RecordSource=“Select*from專業(yè)表where專業(yè)=‘計算機’”

11.4使用DAO訪問數(shù)據(jù)庫

4例11?3利用連接Foxpro數(shù)據(jù)庫,假設Foxpro數(shù)據(jù)庫文件存放在“d:\fox”目錄下。表文件為“學生.dbf”。

Data1.Connect=”FoxPro3.0;”Data1.databaseName=”c:\fox”Data1.RecordSource=”選課.dbf”

(4)RecordSetType:設置記錄集類型,包括表類型記錄集、動態(tài)類型記錄集、快照類型記錄集3種。(5)ReadOnly:設置是否可以修改數(shù)據(jù)庫中的數(shù)據(jù)。(6)Exclusive:該屬性用于控制被打開的數(shù)據(jù)庫是否允許與其他應用程序共享。(7)BOFAction和EOFAction屬性:當記錄指針指向RecordSet對象的開始(第一條記錄)或結束(最后一條記錄)時,數(shù)據(jù)控件要采取的操作。11.4使用DAO訪問數(shù)據(jù)庫

42.數(shù)據(jù)控件的常用事件(1)Reposition事件:當記錄集指針從一條記錄移動到另一條記錄時,將發(fā)生重定位事件。因而利用該事件,用戶可以對當前記錄進行處理。(2)Validate事件:當要移動記錄指針前,修改與刪除記錄前或卸載含有數(shù)據(jù)控件的窗體時觸發(fā)3.數(shù)據(jù)控件的常用方法(1)Refresh方法:用于“刷新”Data控件的屬性設置。例如,重新設置了控件的Connect、DatabaseName、RecordSource、ReadOnly等屬性值后,必須調用Refresh方法使所作的更改生效。(2)UpdateRecord方法:可以將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到被數(shù)據(jù)控件綁定的控件內。(3)UpdateControls方法:可以強制數(shù)據(jù)控件將綁定控件內的數(shù)據(jù)寫入數(shù)據(jù)庫中而不再觸發(fā)Validate事件。在代碼中用該方法確認修改。11.4使用DAO訪問數(shù)據(jù)庫

411.4.3RecordSet對象的屬性和方法數(shù)據(jù)綁定控件連接好數(shù)據(jù)庫,可以對表中的記錄進行操作,對數(shù)據(jù)庫的操作主要包括增加、修改和刪除記錄,這些都要通過記錄集對象來完成。記錄集是一種訪問數(shù)據(jù)庫的工具??梢詫⒁粋€或幾個表中的記錄構成記錄集(和表類似),用戶可以根據(jù)需要通過使用記錄集對象選擇數(shù)據(jù)。1.記錄集類型的屬性RecordSetType有3種取值:0-表類型(Table)1-動態(tài)類型(Dynaset)2-和快照(Snapshot)11.4使用DAO訪問數(shù)據(jù)庫

4屬性名稱含義AbsolutePosition返回當前指針值,如果是第1條記錄,其值為0BOF判斷是否在首記錄之前。EOF判斷是否在末記錄之后。NoMatch如果未找到相匹配的記錄,則為True否則為FalseRecordCount返回記錄集的記錄總數(shù)3.Fields屬性Fields.Count:返回記錄集中的字段個數(shù)。例如:Data1.Recordset.Fields.CountFields(Item).子屬性:子屬性Value返回指定字段的值,Name返回指定字段的名稱,Size返回指定字段的長度,Type返回指定字段的類型代碼。例如

Data1.Recordset.Fields("院系名稱").Value

Data1.Recordset.Fields(0).Value

11.4使用DAO訪問數(shù)據(jù)庫

42.記錄集屬性4.記錄集方法(1)Move方法組:數(shù)據(jù)控件.記錄集.Move方法(2)Find方法組:數(shù)據(jù)控件.記錄集.Find方法(3)Seek方法組:數(shù)據(jù)控件.記錄集.seek比較式,Key1,Key2……(4)數(shù)據(jù)記錄的維護:數(shù)據(jù)控件.記錄集.方法名方法名稱含義MoveFirst將記錄集指針移動到第一條記錄MovePrevious將記錄集指針移動到上一條記錄MoveNext移動記錄集指針到下一條記錄MoveLast移動記錄集指針到最后一條記錄11.4使用DAO訪問數(shù)據(jù)庫

411.4使用DAO訪問數(shù)據(jù)庫

4方法名稱含義FindFirst查詢符合條件的第一條記錄FindLast查詢符合條件的最后一條記錄FindNext查詢符合條件的下一條記錄FindPrevious查詢符合條件的前一條記錄方法名稱含義Open打開記錄集AddNew向記錄集增加一條新記錄Edit對記錄集進行編輯,修改完后要用Update更新Update如果增加或修改記錄后,必須用此方法更新,將緩沖區(qū)里的內容寫入數(shù)據(jù)庫CancelUpdate緩沖區(qū)的內容不寫入數(shù)據(jù)庫Delete從記錄集中將當前記錄刪除,在刪除后移動記錄指針,操作不可恢復Close關閉Recordset對象以便釋放所有關聯(lián)的系統(tǒng)資源。11.4.4數(shù)據(jù)綁定控件數(shù)據(jù)庫連接組件不能在窗體中顯示數(shù)據(jù),為了將數(shù)據(jù)顯示在窗體中,還需與應用程序中的數(shù)據(jù)綁定控件相連接,從而實現(xiàn)對數(shù)據(jù)庫的操作。所謂數(shù)據(jù)綁定控件是一些能夠和數(shù)據(jù)庫中的數(shù)據(jù)表的某個字段建立關聯(lián)的控件。以下列表是本書所介紹的可作為數(shù)據(jù)綁定控件的常用控件(左)和Active控件(右)。TextBox文本框控件Label標簽控件ListBox列表框控件ComboBox組和框控件CheckBox復選框控件PictureBox圖片框控件Image圖像控件OLE容器控件11.4使用DAO訪問數(shù)據(jù)庫

4DBGrid數(shù)據(jù)庫表格控件DBList數(shù)據(jù)庫列表控件DBCombo數(shù)據(jù)庫組合控件DataGrid數(shù)據(jù)表格控件DataList數(shù)據(jù)列表控件DataCombo數(shù)據(jù)組合控件MSFlexGrid數(shù)據(jù)庫表格控件11.4.5Data控件示例例11?4在“選課”數(shù)據(jù)庫中創(chuàng)建“院系表”,并創(chuàng)建一個窗體實現(xiàn)對院系表數(shù)據(jù)的維護,包括實現(xiàn)數(shù)據(jù)移動(首條、上一條、下一條、末條),數(shù)據(jù)維護(增加、編輯、刪除)以及結束程序的功能。設計窗體如圖11?15所示,運行窗口如圖11?16所示。11.4使用DAO訪問數(shù)據(jù)庫

4ActiveX數(shù)據(jù)對象(ActiveXDataObject,

ADO)提供了更加簡明的數(shù)據(jù)訪問對象模型,是一種建立在被稱為OLEDB的數(shù)據(jù)訪問接口之上的高性能的、統(tǒng)一的數(shù)據(jù)訪問對象,能夠處理任何類型的本地或遠程數(shù)據(jù)。ADO技術在VB數(shù)據(jù)庫程序中獲得了廣泛的應用。11.5使用ADO訪問數(shù)據(jù)庫511.5.1ADO對象模型ADO采用了OLEDB的數(shù)據(jù)訪問模式。它是數(shù)據(jù)訪問對象(DAO)、遠程數(shù)據(jù)對象(RDO)和開放數(shù)據(jù)庫互聯(lián)(ODBC)三種方式的擴展。不論是存取本地的還是遠程的數(shù)據(jù),ADO都提供統(tǒng)一接口。ADO定義的可編程的分層對象集合包括Command對象:包含關于某個命令,例如查詢字符串、參數(shù)定義等的信息。Connection對象:包含關于某個數(shù)據(jù)庫提供程序的信息Error對象:包含數(shù)據(jù)提供程序出錯時的擴展信息。Field對象:包含記錄集中數(shù)據(jù)的某個單列的信息。Parameter對象:包含參數(shù)化的Command對象的某個參數(shù)的信息。Property對象:包含某個ADO對象的提供程序定義的特征Recordset對象:包含某個查詢返回的記錄。11.5使用ADO訪問數(shù)據(jù)庫511.5.2ADO數(shù)據(jù)控件ADOData控件是ActiveX數(shù)據(jù)對象。由于ADOData控件不是VisualBasic的內部控件,因此在使用之前必須將其添加到控件箱中去。在控件箱上添加“MicrosoftADODataControl6.0(OLEDB)”項。

屬性說明ConnectionString設置或返回字符串值,用來建立到數(shù)據(jù)源的連接信息。該字符串有一系列”argument=value”形式的參數(shù)構成,參數(shù)說明如下:Provider=[數(shù)據(jù)源驅動]DataSource=[數(shù)據(jù)源名稱(含路徑)]RemoteProvider=[打開客戶端連接時使用的數(shù)據(jù)源驅動]RemoteServer=[服務器的路徑名稱]CommandType設置或返回整常數(shù),指出命令類型。常數(shù)及其意義如下。1—AdCmdTxt命令文本內容為SQL語句2—AdCmdTable命令文本內容為表名3—AdCmdStoreProc命令文本內容為存儲過程名4—AdCmdUnknow命令文本內容類型未知RecordSource指定記錄集的一個字符串表達式。EOFAction記錄集事件,同上一節(jié)的Data控件的同名屬性。11.5使用ADO訪問數(shù)據(jù)庫511.5.3ADO控件示例例11?5在“選課”數(shù)據(jù)庫中創(chuàng)建“課程表”,為“課程表”編寫維護界面,能夠實現(xiàn)“課程表”數(shù)據(jù)的瀏覽(首條、上一條、下一條、末條)和編輯(添加、修改、刪除、退出),設計窗體和運行窗口如圖所示。11.5使用ADO訪問數(shù)據(jù)庫511.5.4數(shù)據(jù)窗體向導VisualBasic提供的數(shù)據(jù)窗體向

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論