第11章VB與數(shù)據(jù)_第1頁
第11章VB與數(shù)據(jù)_第2頁
第11章VB與數(shù)據(jù)_第3頁
第11章VB與數(shù)據(jù)_第4頁
第11章VB與數(shù)據(jù)_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 第第1111章章vb vb 與與數(shù)據(jù)庫數(shù)據(jù)庫 10.1 10.1 數(shù)據(jù)庫概述數(shù)據(jù)庫概述 10.2 10.2 使用使用數(shù)據(jù)庫管理工具數(shù)據(jù)庫管理工具 10.3 Data10.3 Data控件控件 10.4 DbGrid10.4 DbGrid控件控件 10.5 ADO Data10.5 ADO Data控件控件 10.6 10.6 結(jié)構(gòu)查詢語言結(jié)構(gòu)查詢語言 2 10.1 10.1 數(shù)據(jù)庫概述數(shù)據(jù)庫概述 數(shù)據(jù)庫數(shù)據(jù)庫 以一定的組織方式將相關(guān)的數(shù)據(jù)組織在以一定的組織方式將相關(guān)的數(shù)據(jù)組織在 一起,存放在計算機外存儲器,能為多個用戶一起,存放在計算機外存儲器,能為多個用戶 共享,與應(yīng)用程序彼此獨立的一組

2、數(shù)據(jù)的集合。共享,與應(yīng)用程序彼此獨立的一組數(shù)據(jù)的集合。 Visual Basic支持多種類型的數(shù)據(jù)庫,如支持多種類型的數(shù)據(jù)庫,如 Access數(shù)據(jù)庫、數(shù)據(jù)庫、FoxPro數(shù)據(jù)庫、數(shù)據(jù)庫、Microsoft Excel、SQL Server和和Oracle等。等。 3 數(shù)據(jù)訪問對象模型 1.AvtiveX數(shù)據(jù)對象 (ADO) 2.遠程數(shù)據(jù)對象(RDo) 3.數(shù)據(jù)訪問對象(DAO) 4 10.1.110.1.1關(guān)系型數(shù)據(jù)庫 關(guān)系型數(shù)據(jù)庫模型將數(shù)據(jù)用表的集合來表示。關(guān)系型數(shù)據(jù)庫模型將數(shù)據(jù)用表的集合來表示。 通過建立簡單表之間的關(guān)系來定義結(jié)構(gòu),而不是通過建立簡單表之間的關(guān)系來定義結(jié)構(gòu),而不是 根據(jù)數(shù)據(jù)

3、的物理存儲方式建立數(shù)據(jù)中的關(guān)系。不根據(jù)數(shù)據(jù)的物理存儲方式建立數(shù)據(jù)中的關(guān)系。不 管表在數(shù)據(jù)庫文件中的物理存儲方式如何,都可管表在數(shù)據(jù)庫文件中的物理存儲方式如何,都可 以把它看作一組行和列。以把它看作一組行和列。 數(shù)據(jù)庫 表 5 關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫 表是有關(guān)信息的邏輯組,行被稱為記錄,列則被稱表是有關(guān)信息的邏輯組,行被稱為記錄,列則被稱 為字段。為字段。 主鍵主鍵 記錄記錄 字段字段 6 使用使用SQL查詢數(shù)據(jù)庫查詢數(shù)據(jù)庫 結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言(Structure Query Language, SQLSQL)是操作關(guān)系數(shù)據(jù)庫的標準語言。通過是操作關(guān)系數(shù)據(jù)庫的標準語言。通過SQL 命

4、令,可以從數(shù)據(jù)庫的多個表中獲取數(shù)據(jù),也可命令,可以從數(shù)據(jù)庫的多個表中獲取數(shù)據(jù),也可 對數(shù)據(jù)進行更新操作。對數(shù)據(jù)進行更新操作。SQL的主要語句:的主要語句: 語語 句句.分類分類描描 述述 SELECT數(shù)據(jù)查詢數(shù)據(jù)查詢查找滿足特定條件的記錄查找滿足特定條件的記錄 DELETE數(shù)據(jù)操作數(shù)據(jù)操作從數(shù)據(jù)表中刪除記錄從數(shù)據(jù)表中刪除記錄 INSERT數(shù)據(jù)操作數(shù)據(jù)操作向表中插入一條記錄向表中插入一條記錄 UPDATE數(shù)據(jù)操作數(shù)據(jù)操作用來改變特定記錄和字段的值用來改變特定記錄和字段的值 7 SELECTSELECT語句語句 SELECT語句的基本語法形式語句的基本語法形式 SELECT SELECT 目標表達

5、式列表目標表達式列表 FROM FROM 表名表名 WHERE WHERE 查詢條件查詢條件 GROUP BY GROUP BY 分組字段分組字段 HAVING HAVING 分組條件分組條件 ORDER BY ORDER BY 排序關(guān)鍵字段排序關(guān)鍵字段 ASC|DESCASC|DESC 它包含它包含4部分,其中部分,其中SELECT和和FROM子句是必須的,通子句是必須的,通 過使用過使用SELECT語句返回一個記錄集。語句返回一個記錄集。 例例 在學生基本情況表中查詢物理系的學生情況:在學生基本情況表中查詢物理系的學生情況: SELECT SELECT * * FROM FROM 基本情況

6、基本情況 WHEREWHERE專業(yè)專業(yè)= = 物理物理 本章目錄本章目錄 8 SELECTSELECT語句語句- -輸出表達式輸出表達式 目標表達式為查詢結(jié)果要顯示的字段清單目標表達式為查詢結(jié)果要顯示的字段清單(字段字段 間用逗號分開間用逗號分開)。數(shù)據(jù)的顯示順序由字段清單的。數(shù)據(jù)的顯示順序由字段清單的 順序決定。順序決定。 可用星號可用星號*代表所有字段;代表所有字段; 可用可用AS短語指定字段別名;短語指定字段別名; 可通過構(gòu)造表達式對原始數(shù)據(jù)進行復雜的運算可通過構(gòu)造表達式對原始數(shù)據(jù)進行復雜的運算 處理,產(chǎn)生查詢結(jié)果。處理,產(chǎn)生查詢結(jié)果。 例如,例如,根據(jù)出生年月計算每個學生的年齡根據(jù)出生

7、年月計算每個學生的年齡 SELECT 姓名姓名, (Year(Date()-Year(出生年月出生年月) AS 年齡年齡 FROM 基本情況基本情況 本章目錄本章目錄 9 SELECTSELECT語句語句- -查詢條件查詢條件 WHEREWHERE子句用于限制記錄的選擇子句用于限制記錄的選擇 例如例如,查詢,查詢1985-01-01到到1986-12-31之間出生的學生:之間出生的學生: SELECT * FROM 基本情況基本情況 WHERE 出生年月出生年月 BETWEEN #1985-01-01# AND #1986-12-31# 要枚舉出若干項進行查詢,使用運算符要枚舉出若干項進行查詢

8、,使用運算符IN 例如例如,查詢物理系和數(shù)學系的學生數(shù)據(jù):,查詢物理系和數(shù)學系的學生數(shù)據(jù): SELECT * FROM 基本情況基本情況 WHERE 專業(yè)專業(yè) IN (物理物理, 數(shù)學數(shù)學) 等價于:等價于: SELECT * FROM 基本情況基本情況 WHERE專業(yè)專業(yè)= 物理物理 OR 專業(yè)專業(yè) = 數(shù)學數(shù)學 10 SELECTSELECT語句語句- -合計函數(shù)合計函數(shù) 合計函數(shù)用于對記錄集進行統(tǒng)計合計函數(shù)用于對記錄集進行統(tǒng)計 返回指定字段中的最小值返回指定字段中的最小值MINMIN 返回指定字段中的最大值返回指定字段中的最大值MAXMAX 返回特定字段中所有值的總和返回特定字段中所有值

9、的總和SUMSUM 返回選定記錄的個數(shù)返回選定記錄的個數(shù)COUNTCOUNT 獲得特定字段中的值的平均數(shù)獲得特定字段中的值的平均數(shù)AVGAVG 描描 述述合計函數(shù)合計函數(shù) 例如,統(tǒng)計物理系學生的人數(shù):例如,統(tǒng)計物理系學生的人數(shù): SELECT COUNT(*) AS 學生人數(shù)學生人數(shù) FROM 基本情況基本情況 WHERE專業(yè)專業(yè)= “物理物理” COUNT(COUNT(* *) ) 在統(tǒng)計時包含值為空值的記錄在統(tǒng)計時包含值為空值的記錄 COUNT(COUNT(表達式表達式) ) 統(tǒng)計時忽略表達式值為空值的記錄統(tǒng)計時忽略表達式值為空值的記錄 本章目錄本章目錄 11 SELECTSELECT語句

10、語句- -分組分組 GROUP BY子句將指定字段列表中有相同值的子句將指定字段列表中有相同值的 記錄合并成一條記錄。記錄合并成一條記錄。 例如,例如,計算每個學生各門課程平均分:計算每個學生各門課程平均分: SELECT 學號學號, AVG(成績成績) AS 平均分平均分FROM 成績表成績表 GROUP BY 學號學號 要對分組后的數(shù)據(jù)進行過濾,可在要對分組后的數(shù)據(jù)進行過濾,可在GROUP BY 子句后結(jié)合子句后結(jié)合HAVING子句在分組中選擇。子句在分組中選擇。 例如,例如,查詢平均分在查詢平均分在8080分以上的學生:分以上的學生: SELECT 學號學號, AVG(成績成績) AS

11、平均分平均分FROM 成績表成績表 GROUP BY 學號學號HAVING AVG(成績成績)=80 本章目錄本章目錄 12 SELECTSELECT語句語句- -排序排序 ORDER BY子句決定了查詢結(jié)果的排列順序子句決定了查詢結(jié)果的排列順序 在在ORDER BY子句中,可以指定一個或多個字子句中,可以指定一個或多個字 段作為排序關(guān)鍵字,段作為排序關(guān)鍵字,ASC選項代表升序,選項代表升序,DESC 代表降序。代表降序。 SELECT 專業(yè)專業(yè), count(*) AS 學生人數(shù)學生人數(shù) FROM 基本情況表基本情況表 GROUP BY 專業(yè)專業(yè) ORDER BY 學生人數(shù)學生人數(shù) DESC

12、 本章目錄本章目錄 13 SELECTSELECT語句圖解語句圖解 本章目錄本章目錄 14 SELECTSELECT語句語句- -多表連接多表連接 若查詢的數(shù)據(jù)分布在多個表中,則必須建立連接若查詢的數(shù)據(jù)分布在多個表中,則必須建立連接 查詢:查詢: SELECT目標表達式列表目標表達式列表 FROM 表表1, 表表2 WHERE 表表1.字段字段 = 表表2.字段字段 例如例如:學生成績表中只有學號,如何在查看學生學生成績表中只有學號,如何在查看學生 成績的同時能夠直觀地看到學生姓名?這就要在成績的同時能夠直觀地看到學生姓名?這就要在 兩表之間建立連接。兩表之間建立連接。SQL語句如下:語句如下

13、: SELECT基本情況基本情況.姓名姓名, 成績表成績表.* FROM 基本情基本情 況況, 成績表成績表 WHERE成績表成績表.學號學號=基本情況基本情況.學號學號 本章目錄本章目錄 15 10.2 VB數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 10.2.1 ADOADO數(shù)據(jù)控件使用基礎(chǔ)數(shù)據(jù)控件使用基礎(chǔ) 數(shù)據(jù)庫應(yīng)用程序引例數(shù)據(jù)庫應(yīng)用程序引例 例例10.1 設(shè)計一個窗體,用設(shè)計一個窗體,用DataGrid控件顯示控件顯示 Stud.mdb數(shù)據(jù)庫中數(shù)據(jù)庫中“基本情況基本情況”表的內(nèi)容。表的內(nèi)容。 本章目錄本章目錄 16 ADO數(shù)據(jù)控件使用數(shù)據(jù)控件使用 VB采用采用ADO(ActiveX Data Objects

14、)數(shù)據(jù)訪問數(shù)據(jù)訪問 技術(shù),編寫本程序,需要完成以下工作:技術(shù),編寫本程序,需要完成以下工作: v 在窗體上添加在窗體上添加ADOADO數(shù)據(jù)控件數(shù)據(jù)控件 v 使用使用ADOADO連接對象建立與數(shù)據(jù)提供者之間的連接連接對象建立與數(shù)據(jù)提供者之間的連接 v 使用使用ADOADO命令對象操作數(shù)據(jù)源,從數(shù)據(jù)源中產(chǎn)生命令對象操作數(shù)據(jù)源,從數(shù)據(jù)源中產(chǎn)生 記錄集并存放在內(nèi)存中記錄集并存放在內(nèi)存中 1.1. 建立記錄集與數(shù)據(jù)綁定控件的關(guān)聯(lián),在窗體上建立記錄集與數(shù)據(jù)綁定控件的關(guān)聯(lián),在窗體上 顯示數(shù)據(jù)。顯示數(shù)據(jù)。 本章目錄本章目錄 17 數(shù)據(jù)源連接設(shè)置操作數(shù)據(jù)源連接設(shè)置操作 右單擊右單擊ADO控控 件,選擇快捷件,選

15、擇快捷 菜單菜單ADODC 屬性屬性命令,打命令,打 開開ADO控件屬控件屬 性頁窗性頁窗 本章目錄本章目錄 18 選擇提供程序選擇提供程序 選擇提供程序選擇提供程序 本章目錄本章目錄 19 指定訪問的數(shù)據(jù)庫指定訪問的數(shù)據(jù)庫 指定要訪問的指定要訪問的 數(shù)據(jù)庫文件數(shù)據(jù)庫文件 本章目錄本章目錄 20 數(shù)據(jù)訪問過程數(shù)據(jù)訪問過程 v 應(yīng)用程序通過連接對象與數(shù)據(jù)源建立連接應(yīng)用程序通過連接對象與數(shù)據(jù)源建立連接( (不不 同類型的數(shù)據(jù)庫使用各自的連接提供程序同類型的數(shù)據(jù)庫使用各自的連接提供程序) ) v 命令對象發(fā)出命令對象發(fā)出SQL命令從數(shù)據(jù)源中獲取數(shù)據(jù)命令從數(shù)據(jù)源中獲取數(shù)據(jù) v 數(shù)據(jù)集對象用來保存所查詢

16、到的數(shù)據(jù)記錄數(shù)據(jù)集對象用來保存所查詢到的數(shù)據(jù)記錄 v 應(yīng)用程序?qū)τ涗浖M行操作應(yīng)用程序?qū)τ涗浖M行操作 v 記錄集表示內(nèi)存中來自基本表或命令執(zhí)行結(jié)記錄集表示內(nèi)存中來自基本表或命令執(zhí)行結(jié) 果的集合,也由記錄果的集合,也由記錄( (行行) )和字段和字段( (列列) )構(gòu)成,可構(gòu)成,可 以把它當作一個數(shù)據(jù)表來進行操作以把它當作一個數(shù)據(jù)表來進行操作 本章目錄本章目錄 21 22 連接對象重要屬性連接對象重要屬性 連接對象最重要的屬性是連接對象最重要的屬性是ConnectionString,它是,它是 一個字符串,包含了用于與數(shù)據(jù)源建立連接的相一個字符串,包含了用于與數(shù)據(jù)源建立連接的相 關(guān)信息。典型的

17、關(guān)信息。典型的 ConnectionString 屬性值如下:屬性值如下: Provider = Microsoft.Jet.OLEDB.4.0; Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Stud.mdbData Source = Stud.mdb Provide,指定連接提供程序的名稱;,指定連接提供程序的名稱; Data Source,用于指定要連接的數(shù)據(jù)源文件。,用于指定要連接的數(shù)據(jù)源文件。 本章目錄本章目錄 23 10.5 ADO Data10.5 ADO Data控件屬性控件屬性 1.Align 把控件擺放到窗體的特定位置把

18、控件擺放到窗體的特定位置 Visual BasicAlignNone 可以用鼠標拖動可以用鼠標拖動 到任何位置。到任何位置。 Visual BasicAlignTop 窗口頂端窗口頂端 Visual BasicAlignBottom 窗口底部窗口底部 Visual BasicAlignLeft 窗口最左窗口最左 Visual BasicAlignRignt窗口最右窗口最右 24 2.EOFAction和和BOFAction屬性:屬性: 當記錄指針指向記錄集的開始或結(jié)束時,以當記錄指針指向記錄集的開始或結(jié)束時,以 上屬性決定數(shù)據(jù)控件要采取上屬性決定數(shù)據(jù)控件要采取 的操作,當?shù)牟僮?,?EOFAc

19、tion為為2時,記錄指針到達記錄集的結(jié)時,記錄指針到達記錄集的結(jié) 尾處,在尾部自動加入一條空記錄。尾處,在尾部自動加入一條空記錄。 nBOF和和EOF的屬性的屬性 nBOF判定記錄指針是否在首記錄之前,判定記錄指針是否在首記錄之前,EOF判判 定記錄指針是否在末記錄之后。定記錄指針是否在末記錄之后。 n如果如果BOF和和EOF的屬性值都為的屬性值都為True,則記錄集,則記錄集 為空。為空。 ADO Data控件屬性控件屬性 25 3.ConnectionString n連接對象最重要的屬性是連接對象最重要的屬性是ConnectionString, 它是一個字符串,包含了用于與數(shù)據(jù)源建立連它

20、是一個字符串,包含了用于與數(shù)據(jù)源建立連 接的相關(guān)信息。典型的接的相關(guān)信息。典型的 ConnectionString 屬屬 性值如下:性值如下: nProvider = Microsoft.Jet.OLEDB.4.0; Data Source = Stud.mdb nProvide,指定連接提供程序的名稱;,指定連接提供程序的名稱; nData Source,用于指定要連接的數(shù)據(jù)源文件,用于指定要連接的數(shù)據(jù)源文件 26 4.recordSource:確定具體可以訪問的:確定具體可以訪問的 數(shù)據(jù)來源。屬性值可以是數(shù)據(jù)庫中的單數(shù)據(jù)來源。屬性值可以是數(shù)據(jù)庫中的單 個表名,也可以是個表名,也可以是SQL

21、語句。語句。 5. CommandType屬性:指定獲得記錄屬性:指定獲得記錄 源的命令類型。源的命令類型。 值分別為:值分別為:1,2,4,8 2adCmdTable 8-adCmdUnknown 27 6. UserName屬性屬性 指定用戶的名稱,當數(shù)據(jù)庫收到密碼保護指定用戶的名稱,當數(shù)據(jù)庫收到密碼保護 是,要指定該屬性。是,要指定該屬性。 7.PassWord 指定密碼指定密碼 8.Connectiontimeout 設(shè)置建立連接時設(shè)置建立連接時 間,若超時,返回一個錯誤。間,若超時,返回一個錯誤。 28 Recordset 記錄集對象 記錄集對象是一種操作數(shù)據(jù)庫的工具。記錄集對象是一

22、種操作數(shù)據(jù)庫的工具。 數(shù)據(jù)庫內(nèi)的表格不允許直接訪問,只能通數(shù)據(jù)庫內(nèi)的表格不允許直接訪問,只能通 過記錄集對象過記錄集對象Recordset進行瀏覽和操進行瀏覽和操 作。作。 記錄集對象不僅可以處理數(shù)據(jù),而且能報記錄集對象不僅可以處理數(shù)據(jù),而且能報 告處理結(jié)果,對記錄集的更改最后會被告處理結(jié)果,對記錄集的更改最后會被 傳送到原始表。傳送到原始表。 29 ADO控件的方法:控件的方法: 記錄集中數(shù)據(jù)的增、刪、改涉及到記錄集中數(shù)據(jù)的增、刪、改涉及到4 4個方法:個方法: 1. UpdateControls 更新綁定控件的內(nèi)容。更新綁定控件的內(nèi)容。 2.AddNew2.AddNew方法方法 在記錄集中

23、增加入一個新行在記錄集中增加入一個新行 3.Delete3.Delete方法方法 刪除記錄集中的當前記錄刪除記錄集中的當前記錄 4.Update4.Update方法方法 確定修改并保存到數(shù)據(jù)源中確定修改并保存到數(shù)據(jù)源中 5.CancelUpdate5.CancelUpdate方法方法 取消未調(diào)用取消未調(diào)用Update 方法前對記錄所做的所有修改方法前對記錄所做的所有修改 30 增加新記錄增加新記錄 2增加新記錄增加新記錄 (1) 調(diào)用調(diào)用AddNewAddNew方法增加一條空記錄方法增加一條空記錄 (2) 給新記錄各字段賦值給新記錄各字段賦值(可以通過綁定控件直可以通過綁定控件直 接輸入,或使

24、用程序代碼給字段賦值,格式為:接輸入,或使用程序代碼給字段賦值,格式為: Recordset.FieldsRecordset.Fields(字段名字段名) = 值值 (3) 調(diào)用調(diào)用UpdateUpdate方法,確定所做的添加,將方法,確定所做的添加,將 緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫 本章目錄本章目錄 31 刪除記錄刪除記錄 3. 刪除記錄刪除記錄 (1) 定位被刪除的記錄使之成為當前記錄定位被刪除的記錄使之成為當前記錄 (2) 調(diào)用調(diào)用DeleteDelete方法方法 (3) 移動記錄指針移動記錄指針 注意:使用注意:使用Delete Delete方法當前記錄立即刪除,不

25、 方法當前記錄立即刪除,不 加任何的警告或者提示。刪除一條記錄后,綁加任何的警告或者提示。刪除一條記錄后,綁 定控件仍舊顯示該記錄的內(nèi)容。因此,必須移定控件仍舊顯示該記錄的內(nèi)容。因此,必須移 動記錄指針刷新綁定控件。動記錄指針刷新綁定控件。 本章目錄本章目錄 32 修改修改記錄記錄 4.修改記錄修改記錄 當改變數(shù)據(jù)項的的內(nèi)容時,當改變數(shù)據(jù)項的的內(nèi)容時,ADO自動進入編自動進入編 輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的 指針或調(diào)用指針或調(diào)用UpdateUpdate方法,即可確定所做的修方法,即可確定所做的修 改。改。 例例11.6在例在例10.5的基礎(chǔ)上

26、加入的基礎(chǔ)上加入“新增新增”、“刪刪 除除”、“更新更新”、“放棄放棄”和和“結(jié)束結(jié)束”5個按個按 鈕,通過對按鈕的編程建立增、刪、改功能鈕,通過對按鈕的編程建立增、刪、改功能 本章目錄本章目錄 33 查找 Find方法方法 n在在Recordset對象中查找與指定條件相符的一條記錄,對象中查找與指定條件相符的一條記錄, 并使之成為當前記錄。如果找不到,則記錄指針指在并使之成為當前記錄。如果找不到,則記錄指針指在 記錄集末尾。記錄集末尾。 nRecordset.Find 搜索條件搜索條件 ,位移位移 , 搜索方向搜索方向, 開開 始位置始位置 n例:10.6 mno = InputBox(請輸

27、入學號請輸入學號, 查找窗查找窗) Adodc1.Recordset.find 學號學號= & mno & , , , 1 5. Move方法組方法組 Move方法可代替對數(shù)據(jù)控件對象的方法可代替對數(shù)據(jù)控件對象的4個箭個箭 頭按鈕的操作遍歷整個記錄集。頭按鈕的操作遍歷整個記錄集。 (1) MoveFirst方法移至第方法移至第1條記錄。條記錄。 (2) MoveLast方法移至最后一條記錄。方法移至最后一條記錄。 (3) MoveNext方法移至下一條記錄。方法移至下一條記錄。 (4) MovePrevious方法移至上一條記錄。方法移至上一條記錄。 (5) Move n 方法向前或向后移方法

28、向前或向后移n條記錄。條記錄。 例例10.6用命令按鈕代替數(shù)據(jù)控件對象的用命令按鈕代替數(shù)據(jù)控件對象的4個個 箭頭按鈕的功能箭頭按鈕的功能,使用使用Find方法查找記錄方法查找記錄 35 ADO控件的事件:控件的事件: nWILLMove和和MoveComplete事件:事件: n當某種方法改變記錄集的指針使其移動當某種方法改變記錄集的指針使其移動 時,產(chǎn)生時,產(chǎn)生WillMove事件。事件。 n一條記錄成為當前記錄后,產(chǎn)生一條記錄成為當前記錄后,產(chǎn)生 MoveComplete事件事件 36 nWILLChangeField和和 FieldChangeComplete事件:事件: nWILLCh

29、angeField當前記錄集中的當前記當前記錄集中的當前記 錄的一個或多個字段發(fā)生變化時觸發(fā)。錄的一個或多個字段發(fā)生變化時觸發(fā)。 nFieldChangeComplete 當前字段發(fā)生變當前字段發(fā)生變 化后觸發(fā)?;笥|發(fā)。 37 nWILLChangeRecord和和 RecordChangeComplete事件:事件: nWILLChangeRecord當前記錄集中的當前記錄集中的 當前記錄的一個或多個記錄發(fā)生變化時當前記錄的一個或多個記錄發(fā)生變化時 觸發(fā)。觸發(fā)。 nRecordChangeComplete 當前記錄完當前記錄完 成后時觸發(fā)。成后時觸發(fā)。 38 計算機計算機丁保華丁保華500

30、011 物理李明 500201 數(shù)學莊前500102 專業(yè)姓名學號 Adodc1.Recordset. AddNew 增加記錄增加記錄 數(shù)據(jù)庫 UpData 填入新數(shù)據(jù)填入新數(shù)據(jù) 編輯記錄編輯記錄刪除記錄刪除記錄 給各字段賦值給各字段賦值 調(diào)用調(diào)用Delete方法方法 調(diào)用調(diào)用Update方法方法 移動記錄指針移動記錄指針 計算機計算機丁保華丁保華500011 物理李明500201 數(shù)學莊前500102 專業(yè)姓名學號 數(shù)據(jù)修改小結(jié)數(shù)據(jù)修改小結(jié) 本章目錄本章目錄 39 n返回唯一標識 Recordset 對象中當前記錄的書簽,或者將 Recordset 對象的當前記錄設(shè)置為由有效書簽所標識的記錄

31、。 n設(shè)置和返回值設(shè)置和返回值 n設(shè)置或返回計算有效書簽的變體型變體型表達式。 n說明說明 n使用 Bookmark 屬性可保存當前記錄的位置并隨時返回到該記 錄。書簽只能在支持書簽功能的 Recordset 對象中使用。 n打開 Recordset 對象時,其每個記錄都有唯一的書簽。要保存 當前記錄的書簽,請將 Bookmark 屬性的值賦給一個變量。移 動到其他記錄后要快速返回到該記錄,請將該 Recordset 對象 的 Bookmark 屬性設(shè)置為該變量的值。 n用戶可能無法查看書簽的值,也同樣無法對書簽直接進行比較 (指向同一記錄的兩個書簽的值可能不同)。 40 查詢與統(tǒng)計查詢與統(tǒng)計

32、 通過通過SQL語句從數(shù)據(jù)源中獲取信息,查詢條件語句從數(shù)據(jù)源中獲取信息,查詢條件 由由SelectSelect語句的語句的WhereWhere短語構(gòu)成,使用短語構(gòu)成,使用And與與 Or運算符組合出復雜的查詢條件運算符組合出復雜的查詢條件。模糊查詢使。模糊查詢使 用運算符用運算符LikeLike,百分號,百分號%代替任意個不確定的代替任意個不確定的 內(nèi)容,用下劃線內(nèi)容,用下劃線_ _代替一個不確定的內(nèi)容。代替一個不確定的內(nèi)容。 例如,例如,姓名姓名 Like Like 張張% % 將查詢所有張姓的人員將查詢所有張姓的人員 例例10.7 根據(jù)輸入的專業(yè)名稱,在網(wǎng)格內(nèi)顯示根據(jù)輸入的專業(yè)名稱,在網(wǎng)格

33、內(nèi)顯示 Student.mdb數(shù)據(jù)庫中該專業(yè)所有學生信息數(shù)據(jù)庫中該專業(yè)所有學生信息 本章目錄本章目錄 41 查詢與統(tǒng)計查詢與統(tǒng)計 例例10.8使用數(shù)據(jù)列表框或數(shù)據(jù)組合框提供專業(yè)名使用數(shù)據(jù)列表框或數(shù)據(jù)組合框提供專業(yè)名 稱,實現(xiàn)查詢稱,實現(xiàn)查詢 “Select * From 基本情況表基本情況表 Where 專業(yè)專業(yè) = & DataList1.BoundText & 本章目錄本章目錄 42 n例例10.9使用使用SQL的函數(shù)和分組功能,統(tǒng)計各專業(yè)的函數(shù)和分組功能,統(tǒng)計各專業(yè) 的人數(shù)、年齡分布。的人數(shù)、年齡分布。 n Adodc1.RecordSource = select 專業(yè)專業(yè),count

34、(*) as 人數(shù)人數(shù) from 基本情況表基本情況表 group by 專業(yè)專業(yè) Adodc1.Refresh nAdodc1.RecordSource = select year(出生年出生年 月月) as 出生年份出生年份,count (*) as 人數(shù)人數(shù) from 基本情基本情 況表況表 group by year(出生年月出生年月) Adodc1.Refresh 43 DBGrid和DataGrid nData Bound Grid Control輸出記錄輸出記錄 該控該控 件是輸出數(shù)據(jù)庫記錄最有用也是最多的控件。件是輸出數(shù)據(jù)庫記錄最有用也是最多的控件。 但該控件在一些電腦上可能用

35、不到但該控件在一些電腦上可能用不到. DataGrid 控件是一種類似于電子數(shù)據(jù)表的控件是一種類似于電子數(shù)據(jù)表的 綁定控件,它是所有數(shù)據(jù)庫感知控件中最有用綁定控件,它是所有數(shù)據(jù)庫感知控件中最有用 也是用得最多的控件。它可以用來顯示整個數(shù)也是用得最多的控件。它可以用來顯示整個數(shù) 據(jù)表或表的部分內(nèi)容或者幾個表的混合內(nèi)據(jù)表或表的部分內(nèi)容或者幾個表的混合內(nèi) 容。容。 nDBGRID,用在用在DAO下下 nDataGrid 控件是一種類似于電子數(shù)據(jù)表的綁控件是一種類似于電子數(shù)據(jù)表的綁 定控件定控件,用在用在ADO下下. 44 45 46 nCommandType屬性:指定獲得記錄源的命令類屬性:指定獲得

36、記錄源的命令類 型。型。 nrecordSource:確定具體可以訪問的數(shù)據(jù)來源。:確定具體可以訪問的數(shù)據(jù)來源。 屬性值可以是數(shù)據(jù)庫中的單個表名,也可以是屬性值可以是數(shù)據(jù)庫中的單個表名,也可以是SQL 語句。語句。 nADO控件的其它屬性、事件和方法:控件的其它屬性、事件和方法: nRecordset屬性:產(chǎn)生屬性:產(chǎn)生ADO控件實際可以操作的記控件實際可以操作的記 錄集對象。錄集對象。 nEOFAction和和BOFAction屬性:屬性: n當記錄指針指向記錄集的開始或結(jié)束時,以上屬性當記錄指針指向記錄集的開始或結(jié)束時,以上屬性 決定數(shù)據(jù)控件要采取決定數(shù)據(jù)控件要采取 的操作,當?shù)牟僮鳎擡

37、OFAction為為2時,時, 記錄指針到達記錄集的結(jié)尾處,在尾部自動加入一記錄指針到達記錄集的結(jié)尾處,在尾部自動加入一 條空記錄。條空記錄。 47 nRefresh方法:刷新方法:刷新ADO數(shù)據(jù)控件的連接屬性。數(shù)據(jù)控件的連接屬性。 48 10.2.2 數(shù)據(jù)綁定數(shù)據(jù)綁定 什么是數(shù)據(jù)綁定?什么是數(shù)據(jù)綁定? 數(shù)據(jù)綁定是一個過程,即在運行時自動為與記錄數(shù)據(jù)綁定是一個過程,即在運行時自動為與記錄 集中的元素關(guān)聯(lián)的控件設(shè)置屬性。以便通過控件集中的元素關(guān)聯(lián)的控件設(shè)置屬性。以便通過控件 顯示數(shù)據(jù)集中的數(shù)據(jù)。顯示數(shù)據(jù)集中的數(shù)據(jù)。 本章目錄本章目錄 49 數(shù)據(jù)綁定數(shù)據(jù)綁定 Windows 窗體有簡單數(shù)據(jù)綁定和復

38、雜數(shù)據(jù)綁定窗體有簡單數(shù)據(jù)綁定和復雜數(shù)據(jù)綁定 簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定 簡單數(shù)據(jù)綁定就是將控件綁定到單個數(shù)據(jù)字段。簡單數(shù)據(jù)綁定就是將控件綁定到單個數(shù)據(jù)字段。 每個控件僅顯示數(shù)據(jù)集中的一個字段值。最常用每個控件僅顯示數(shù)據(jù)集中的一個字段值。最常用 的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標簽。的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標簽。 在設(shè)計或運行時設(shè)置控件屬性建立綁定在設(shè)計或運行時設(shè)置控件屬性建立綁定: : DataSourceDataSource:指定:指定ADOADO數(shù)據(jù)控件數(shù)據(jù)控件 DataFieldDataField:設(shè)置記錄集中有效的字段:設(shè)置記錄集中有效的字段 本章目錄本章目錄 50 簡單

39、數(shù)據(jù)綁定簡單數(shù)據(jù)綁定 例例10.2 數(shù)據(jù)綁定的操作過程數(shù)據(jù)綁定的操作過程 界面設(shè)計界面設(shè)計 建立連接和產(chǎn)生記錄集建立連接和產(chǎn)生記錄集 設(shè)置設(shè)置綁定屬性綁定屬性 本章目錄本章目錄 51 復雜數(shù)據(jù)綁定復雜數(shù)據(jù)綁定 復雜數(shù)據(jù)綁定允許將多個數(shù)據(jù)字段綁定到一個控復雜數(shù)據(jù)綁定允許將多個數(shù)據(jù)字段綁定到一個控 件,同時顯示記錄源中的多行或多列。件,同時顯示記錄源中的多行或多列。 支持復雜數(shù)據(jù)綁定的常用控件:支持復雜數(shù)據(jù)綁定的常用控件: n DataGrid DataGrid 數(shù)據(jù)網(wǎng)格數(shù)據(jù)網(wǎng)格 n MSHFlexGrid MSHFlexGrid 數(shù)據(jù)網(wǎng)格數(shù)據(jù)網(wǎng)格 n DataList DataList 數(shù)據(jù)列表

40、框數(shù)據(jù)列表框 n DataCombo DataCombo 數(shù)據(jù)組合框數(shù)據(jù)組合框 本章目錄本章目錄 52 復雜數(shù)據(jù)綁定復雜數(shù)據(jù)綁定 例例10.3復雜數(shù)據(jù)綁定的操作過程復雜數(shù)據(jù)綁定的操作過程 界面設(shè)計界面設(shè)計 建立連接和產(chǎn)生記錄集建立連接和產(chǎn)生記錄集 數(shù)據(jù)綁定數(shù)據(jù)綁定 本例本例DataGrid控件要綁定不同的表,故需要通過控件要綁定不同的表,故需要通過 代碼設(shè)置控件的代碼設(shè)置控件的DataSource 屬性。屬性。 程序代碼程序代碼 本章目錄本章目錄 53 復雜數(shù)據(jù)綁定復雜數(shù)據(jù)綁定 例例10.4使用使用SQL語句選擇數(shù)據(jù)表部分數(shù)據(jù)構(gòu)成記語句選擇數(shù)據(jù)表部分數(shù)據(jù)構(gòu)成記 錄集。在網(wǎng)格上綁定部分字段,需要

41、對數(shù)據(jù)網(wǎng)格錄集。在網(wǎng)格上綁定部分字段,需要對數(shù)據(jù)網(wǎng)格 布局進行編輯。布局進行編輯。 本章目錄本章目錄 54 VB VB數(shù)據(jù)庫訪問過程數(shù)據(jù)庫訪問過程 本章目錄本章目錄 55 56 10.3 10.3 記錄集對象記錄集對象 10.3.1 瀏覽記錄集瀏覽記錄集 1. AbsoloutPostionAbsoloutPostion屬性屬性 返回當前記錄指針值,從返回當前記錄指針值,從1到到Recordset對象所對象所 含記錄數(shù)。含記錄數(shù)。 2. 本章目錄本章目錄 57 3. RecordCountRecordCount屬性屬性 對對Recordset對象中的記錄計數(shù),該屬性為只對象中的記錄計數(shù),該屬性

42、為只 讀屬性。讀屬性。 4. FindFind方法方法 在在Recordset對象中查找與指定條件相符的一對象中查找與指定條件相符的一 條記錄,并使之成為當前記錄。如果找不到,條記錄,并使之成為當前記錄。如果找不到, 則記錄指針指在記錄集末尾。則記錄指針指在記錄集末尾。 Recordset.Find Recordset.Find 搜索條件搜索條件 ,位移位移 , 搜索搜索 方向方向, 開始位置開始位置 本章目錄本章目錄 58 本章目錄本章目錄 59 MoveNext MoveLast MoveFirst MovePrevious Adodc1.Recordset. Find 學號學號= 500

43、011 計算機計算機丁保華丁保華500011 物理李明 500201 數(shù)學莊前500102 專業(yè)姓名學號 EOF BOF 記錄集屬性方法小結(jié)記錄集屬性方法小結(jié) 本章目錄本章目錄 60 10.3.2 10.3.2 記錄集的編輯記錄集的編輯 本章目錄本章目錄 61 增加新記錄增加新記錄 2增加新記錄增加新記錄 (1) 調(diào)用調(diào)用AddNewAddNew方法增加一條空記錄方法增加一條空記錄 (2) 給新記錄各字段賦值給新記錄各字段賦值(可以通過綁定控件直可以通過綁定控件直 接輸入,或使用程序代碼給字段賦值,格式為:接輸入,或使用程序代碼給字段賦值,格式為: Recordset.FieldsRecord

44、set.Fields(字段名字段名) = 值值 (3) 調(diào)用調(diào)用UpdateUpdate方法,確定所做的添加,將方法,確定所做的添加,將 緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫 本章目錄本章目錄 62 刪除記錄刪除記錄 3. 刪除記錄刪除記錄 (1) 定位被刪除的記錄使之成為當前記錄定位被刪除的記錄使之成為當前記錄 (2) 調(diào)用調(diào)用DeleteDelete方法方法 (3) 移動記錄指針移動記錄指針 注意:使用注意:使用Delete Delete方法當前記錄立即刪除,不 方法當前記錄立即刪除,不 加任何的警告或者提示。刪除一條記錄后,綁加任何的警告或者提示。刪除一條記錄后,綁 定控件仍

45、舊顯示該記錄的內(nèi)容。因此,必須移定控件仍舊顯示該記錄的內(nèi)容。因此,必須移 動記錄指針刷新綁定控件。動記錄指針刷新綁定控件。 本章目錄本章目錄 63 修改修改記錄記錄 4.修改記錄修改記錄 當改變數(shù)據(jù)項的的內(nèi)容時,當改變數(shù)據(jù)項的的內(nèi)容時,ADO自動進入編自動進入編 輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的 指針或調(diào)用指針或調(diào)用UpdateUpdate方法,即可確定所做的修方法,即可確定所做的修 改。改。 例例11.6在例在例10.5的基礎(chǔ)上加入的基礎(chǔ)上加入“新增新增”、“刪刪 除除”、“更新更新”、“放棄放棄”和和“結(jié)束結(jié)束”5個按個按 鈕,通過對按鈕的編

46、程建立增、刪、改功能鈕,通過對按鈕的編程建立增、刪、改功能 本章目錄本章目錄 64 計算機計算機丁保華丁保華500011 物理李明 500201 數(shù)學莊前500102 專業(yè)姓名學號 Adodc1.Recordset. AddNew 增加記錄增加記錄 數(shù)據(jù)庫 UpData 填入新數(shù)據(jù)填入新數(shù)據(jù) 編輯記錄編輯記錄刪除記錄刪除記錄 給各字段賦值給各字段賦值 調(diào)用調(diào)用Delete方法方法 調(diào)用調(diào)用Update方法方法 移動記錄指針移動記錄指針 計算機計算機丁保華丁保華500011 物理李明500201 數(shù)學莊前500102 專業(yè)姓名學號 數(shù)據(jù)修改小結(jié)數(shù)據(jù)修改小結(jié) 本章目錄本章目錄 65 10.3.4 BLOB數(shù)據(jù)處理數(shù)據(jù)處理 二進制大型對象二進制大型對象

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論