




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rè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)查詢語言210.1 10.1 數(shù)據(jù)庫概述數(shù)據(jù)庫概述數(shù)據(jù)庫數(shù)據(jù)庫 以一定的組織方式將相關(guān)的數(shù)據(jù)組織在以一定的組織方式將相關(guān)的數(shù)據(jù)組織在一起,存放在計(jì)算機(jī)外存儲器,能為多個(gè)用戶一起,存放在計(jì)算機(jī)外存儲器,能為多個(gè)用戶共享,與應(yīng)用程序彼此獨(dú)立的一組數(shù)據(jù)的集合。共享,
2、與應(yīng)用程序彼此獨(dú)立的一組數(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.遠(yuǎn)程數(shù)據(jù)對象(RDo)3.數(shù)據(jù)訪問對象(DAO)410.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ù)的物理存儲方式建立數(shù)據(jù)中的關(guān)系。不根據(jù)
3、數(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ù)庫的標(biāo)準(zhǔn)語言。通過是操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。通過SQL命令,可以從數(shù)據(jù)庫的多個(gè)表中獲取數(shù)據(jù),也可命令,可以從數(shù)據(jù)庫的多個(gè)表中
4、獲取數(shù)據(jù),也可對數(shù)據(jù)進(jìn)行更新操作。對數(shù)據(jù)進(jìn)行更新操作。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ù)操作用來改變特定記錄和字段的值用來改變特定記錄和字段的值7SELECTSELECT語句語句 SELECT語句的基本語法形式語句的基本語法形式 SELECT SELECT 目標(biāo)表達(dá)式列表目標(biāo)表達(dá)式列表 FROM FROM 表名表名 WHERE WHERE 查詢條件
5、查詢條件 GROUP BY GROUP BY 分組字段分組字段 HAVING HAVING 分組條件分組條件 ORDER BY ORDER BY 排序關(guān)鍵字段排序關(guān)鍵字段 ASC|DESCASC|DESC 它包含它包含4部分,其中部分,其中SELECT和和FROM子句是必須的,通子句是必須的,通過使用過使用SELECT語句返回一個(gè)記錄集。語句返回一個(gè)記錄集。 例例 在學(xué)生基本情況表中查詢物理系的學(xué)生情況:在學(xué)生基本情況表中查詢物理系的學(xué)生情況:SELECT SELECT * * FROM FROM 基本情況基本情況 WHEREWHERE專業(yè)專業(yè)= = 物理物理 本章目錄本章目錄8SELECTS
6、ELECT語句語句- -輸出表達(dá)式輸出表達(dá)式目標(biāo)表達(dá)式為查詢結(jié)果要顯示的字段清單目標(biāo)表達(dá)式為查詢結(jié)果要顯示的字段清單(字段字段間用逗號分開間用逗號分開)。數(shù)據(jù)的顯示順序由字段清單的。數(shù)據(jù)的顯示順序由字段清單的順序決定。順序決定。 可用星號可用星號*代表所有字段;代表所有字段; 可用可用AS短語指定字段別名;短語指定字段別名; 可通過構(gòu)造表達(dá)式對原始數(shù)據(jù)進(jìn)行復(fù)雜的運(yùn)算可通過構(gòu)造表達(dá)式對原始數(shù)據(jù)進(jìn)行復(fù)雜的運(yùn)算處理,產(chǎn)生查詢結(jié)果。處理,產(chǎn)生查詢結(jié)果。例如,例如,根據(jù)出生年月計(jì)算每個(gè)學(xué)生的年齡根據(jù)出生年月計(jì)算每個(gè)學(xué)生的年齡SELECT 姓名姓名, (Year(Date()-Year(出生年月出生年月)
7、 AS 年齡年齡 FROM 基本情況基本情況 本章目錄本章目錄9SELECTSELECT語句語句- -查詢條件查詢條件WHEREWHERE子句用于限制記錄的選擇子句用于限制記錄的選擇例如例如,查詢,查詢1985-01-01到到1986-12-31之間出生的學(xué)生:之間出生的學(xué)生:SELECT * FROM 基本情況基本情況 WHERE 出生年月出生年月 BETWEEN #1985-01-01# AND #1986-12-31#要枚舉出若干項(xiàng)進(jìn)行查詢,使用運(yùn)算符要枚舉出若干項(xiàng)進(jìn)行查詢,使用運(yùn)算符IN例如例如,查詢物理系和數(shù)學(xué)系的學(xué)生數(shù)據(jù):,查詢物理系和數(shù)學(xué)系的學(xué)生數(shù)據(jù):SELECT * FROM
8、基本情況基本情況 WHERE 專業(yè)專業(yè) IN (物理物理, 數(shù)學(xué)數(shù)學(xué)) 等價(jià)于:等價(jià)于:SELECT * FROM 基本情況基本情況 WHERE專業(yè)專業(yè)= 物理物理 OR 專業(yè)專業(yè) = 數(shù)學(xué)數(shù)學(xué) 10SELECTSELECT語句語句- -合計(jì)函數(shù)合計(jì)函數(shù)合計(jì)函數(shù)用于對記錄集進(jìn)行統(tǒng)計(jì)合計(jì)函數(shù)用于對記錄集進(jìn)行統(tǒng)計(jì)返回指定字段中的最小值返回指定字段中的最小值MINMIN返回指定字段中的最大值返回指定字段中的最大值MAXMAX返回特定字段中所有值的總和返回特定字段中所有值的總和SUMSUM返回選定記錄的個(gè)數(shù)返回選定記錄的個(gè)數(shù)COUNTCOUNT獲得特定字段中的值的平均數(shù)獲得特定字段中的值的平均數(shù)AVG
9、AVG描描 述述合計(jì)函數(shù)合計(jì)函數(shù)例如,統(tǒng)計(jì)物理系學(xué)生的人數(shù):例如,統(tǒng)計(jì)物理系學(xué)生的人數(shù):SELECT COUNT(*) AS 學(xué)生人數(shù)學(xué)生人數(shù) FROM 基本情況基本情況 WHERE專業(yè)專業(yè)= “物理物理”COUNT(COUNT(* *) ) 在統(tǒng)計(jì)時(shí)包含值為空值的記錄在統(tǒng)計(jì)時(shí)包含值為空值的記錄COUNT(COUNT(表達(dá)式表達(dá)式) ) 統(tǒng)計(jì)時(shí)忽略表達(dá)式值為空值的記錄統(tǒng)計(jì)時(shí)忽略表達(dá)式值為空值的記錄本章目錄本章目錄11SELECTSELECT語句語句- -分組分組GROUP BY子句將指定字段列表中有相同值的子句將指定字段列表中有相同值的記錄合并成一條記錄。記錄合并成一條記錄。例如,例如,計(jì)算每
10、個(gè)學(xué)生各門課程平均分:計(jì)算每個(gè)學(xué)生各門課程平均分:SELECT 學(xué)號學(xué)號, AVG(成績成績) AS 平均分平均分FROM 成績表成績表 GROUP BY 學(xué)號學(xué)號要對分組后的數(shù)據(jù)進(jìn)行過濾,可在要對分組后的數(shù)據(jù)進(jìn)行過濾,可在GROUP BY子句后結(jié)合子句后結(jié)合HAVING子句在分組中選擇。子句在分組中選擇。例如,例如,查詢平均分在查詢平均分在8080分以上的學(xué)生:分以上的學(xué)生:SELECT 學(xué)號學(xué)號, AVG(成績成績) AS 平均分平均分FROM 成績表成績表 GROUP BY 學(xué)號學(xué)號HAVING AVG(成績成績)=80 本章目錄本章目錄12SELECTSELECT語句語句- -排序排序
11、ORDER BY子句決定了查詢結(jié)果的排列順序子句決定了查詢結(jié)果的排列順序在在ORDER BY子句中,可以指定一個(gè)或多個(gè)字子句中,可以指定一個(gè)或多個(gè)字段作為排序關(guān)鍵字,段作為排序關(guān)鍵字,ASC選項(xiàng)代表升序,選項(xiàng)代表升序,DESC代表降序。代表降序。SELECT 專業(yè)專業(yè), count(*) AS 學(xué)生人數(shù)學(xué)生人數(shù)FROM 基本情況表基本情況表 GROUP BY 專業(yè)專業(yè)ORDER BY 學(xué)生人數(shù)學(xué)生人數(shù) DESC本章目錄本章目錄13SELECTSELECT語句圖解語句圖解本章目錄本章目錄14SELECTSELECT語句語句- -多表連接多表連接若查詢的數(shù)據(jù)分布在多個(gè)表中,則必須建立連接若查詢的數(shù)
12、據(jù)分布在多個(gè)表中,則必須建立連接查詢:查詢:SELECT目標(biāo)表達(dá)式列表目標(biāo)表達(dá)式列表 FROM 表表1, 表表2 WHERE 表表1.字段字段 = 表表2.字段字段例如例如:學(xué)生成績表中只有學(xué)號,如何在查看學(xué)生學(xué)生成績表中只有學(xué)號,如何在查看學(xué)生成績的同時(shí)能夠直觀地看到學(xué)生姓名?這就要在成績的同時(shí)能夠直觀地看到學(xué)生姓名?這就要在兩表之間建立連接。兩表之間建立連接。SQL語句如下:語句如下:SELECT基本情況基本情況.姓名姓名, 成績表成績表.* FROM 基本情基本情況況, 成績表成績表 WHERE成績表成績表.學(xué)號學(xué)號=基本情況基本情況.學(xué)號學(xué)號 本章目錄本章目錄1510.2 VB數(shù)據(jù)庫訪
13、問數(shù)據(jù)庫訪問 10.2.1 ADOADO數(shù)據(jù)控件使用基礎(chǔ)數(shù)據(jù)控件使用基礎(chǔ) 數(shù)據(jù)庫應(yīng)用程序引例數(shù)據(jù)庫應(yīng)用程序引例例例10.1 設(shè)計(jì)一個(gè)窗體,用設(shè)計(jì)一個(gè)窗體,用DataGrid控件顯示控件顯示Stud.mdb數(shù)據(jù)庫中數(shù)據(jù)庫中“基本情況基本情況”表的內(nèi)容。表的內(nèi)容。 本章目錄本章目錄16ADO數(shù)據(jù)控件使用數(shù)據(jù)控件使用 VB采用采用ADO(ActiveX Data Objects)數(shù)據(jù)訪問數(shù)據(jù)訪問技術(shù),編寫本程序,需要完成以下工作:技術(shù),編寫本程序,需要完成以下工作:v 在窗體上添加在窗體上添加ADOADO數(shù)據(jù)控件數(shù)據(jù)控件v 使用使用ADOADO連接對象建立與數(shù)據(jù)提供者之間的連接連接對象建立與數(shù)據(jù)提供
14、者之間的連接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控控件,選擇快捷件,選擇快捷菜單菜單ADODC屬性屬性命令,打命令,打開開ADO控件屬控件屬性頁窗性頁窗本章目錄本章目錄18選擇提供程序選擇提供程序選擇提供程序選擇提供程序 本章目錄本章目錄19指定訪問的數(shù)據(jù)庫指定訪問的數(shù)據(jù)庫指定要訪問的指定要訪問的數(shù)據(jù)庫文件數(shù)據(jù)庫文件
15、 本章目錄本章目錄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ù)集對象用來保存所查詢到的數(shù)據(jù)記錄數(shù)據(jù)集對象用來保存所查詢到的數(shù)據(jù)記錄v 應(yīng)用程序?qū)τ涗浖M(jìn)行操作應(yīng)用程序?qū)τ涗浖M(jìn)行操作v 記錄集表示內(nèi)存中來自基本表或命令執(zhí)行結(jié)記錄集表示內(nèi)存中來自基本表或命令執(zhí)行結(jié)果的集合,也由記錄果的集合,也由記錄( (行行) )和字段和字段( (列列) )構(gòu)成,可構(gòu)成,可以把
16、它當(dāng)作一個(gè)數(shù)據(jù)表來進(jìn)行操作以把它當(dāng)作一個(gè)數(shù)據(jù)表來進(jìn)行操作 本章目錄本章目錄2122連接對象重要屬性連接對象重要屬性連接對象最重要的屬性是連接對象最重要的屬性是ConnectionString,它是,它是一個(gè)字符串,包含了用于與數(shù)據(jù)源建立連接的相一個(gè)字符串,包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息。典型的關(guān)信息。典型的 ConnectionString 屬性值如下:屬性值如下:Provider = Microsoft.Jet.OLEDB.4.0; Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Stud.mdbData Source = Stud.
17、mdbProvide,指定連接提供程序的名稱;,指定連接提供程序的名稱;Data Source,用于指定要連接的數(shù)據(jù)源文件。,用于指定要連接的數(shù)據(jù)源文件。本章目錄本章目錄2310.5 ADO Data10.5 ADO Data控件屬性控件屬性1.Align 把控件擺放到窗體的特定位置把控件擺放到窗體的特定位置Visual BasicAlignNone 可以用鼠標(biāo)拖動可以用鼠標(biāo)拖動到任何位置。到任何位置。Visual BasicAlignTop 窗口頂端窗口頂端Visual BasicAlignBottom 窗口底部窗口底部Visual BasicAlignLeft 窗口最左窗口最左Visual
18、 BasicAlignRignt窗口最右窗口最右242.EOFAction和和BOFAction屬性:屬性: 當(dāng)記錄指針指向記錄集的開始或結(jié)束時(shí),以當(dāng)記錄指針指向記錄集的開始或結(jié)束時(shí),以上屬性決定數(shù)據(jù)控件要采取上屬性決定數(shù)據(jù)控件要采取 的操作,當(dāng)?shù)牟僮?,?dāng)EOFAction為為2時(shí),記錄指針到達(dá)記錄集的結(jié)時(shí),記錄指針到達(dá)記錄集的結(jié)尾處,在尾部自動加入一條空記錄。尾處,在尾部自動加入一條空記錄。nBOF和和EOF的屬性的屬性nBOF判定記錄指針是否在首記錄之前,判定記錄指針是否在首記錄之前,EOF判判定記錄指針是否在末記錄之后。定記錄指針是否在末記錄之后。n如果如果BOF和和EOF的屬性值都為的
19、屬性值都為True,則記錄集,則記錄集為空。為空。ADO Data控件屬性控件屬性253.ConnectionStringn連接對象最重要的屬性是連接對象最重要的屬性是ConnectionString,它是一個(gè)字符串,包含了用于與數(shù)據(jù)源建立連它是一個(gè)字符串,包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息。典型的接的相關(guān)信息。典型的 ConnectionString 屬屬性值如下:性值如下:nProvider = Microsoft.Jet.OLEDB.4.0; Data Source = Stud.mdbnProvide,指定連接提供程序的名稱;,指定連接提供程序的名稱;nData Source,用于指
20、定要連接的數(shù)據(jù)源文件,用于指定要連接的數(shù)據(jù)源文件264.recordSource:確定具體可以訪問的:確定具體可以訪問的數(shù)據(jù)來源。屬性值可以是數(shù)據(jù)庫中的單數(shù)據(jù)來源。屬性值可以是數(shù)據(jù)庫中的單個(gè)表名,也可以是個(gè)表名,也可以是SQL語句。語句。5. CommandType屬性:指定獲得記錄屬性:指定獲得記錄源的命令類型。源的命令類型。值分別為:值分別為:1,2,4,82adCmdTable8-adCmdUnknown276. UserName屬性屬性 指定用戶的名稱,當(dāng)數(shù)據(jù)庫收到密碼保護(hù)指定用戶的名稱,當(dāng)數(shù)據(jù)庫收到密碼保護(hù)是,要指定該屬性。是,要指定該屬性。7.PassWord 指定密碼指定密碼8.
21、Connectiontimeout 設(shè)置建立連接時(shí)設(shè)置建立連接時(shí)間,若超時(shí),返回一個(gè)錯(cuò)誤。間,若超時(shí),返回一個(gè)錯(cuò)誤。28Recordset 記錄集對象記錄集對象是一種操作數(shù)據(jù)庫的工具。記錄集對象是一種操作數(shù)據(jù)庫的工具。數(shù)據(jù)庫內(nèi)的表格不允許直接訪問,只能通數(shù)據(jù)庫內(nèi)的表格不允許直接訪問,只能通過記錄集對象過記錄集對象Recordset進(jìn)行瀏覽和操進(jìn)行瀏覽和操作。作。記錄集對象不僅可以處理數(shù)據(jù),而且能報(bào)記錄集對象不僅可以處理數(shù)據(jù),而且能報(bào)告處理結(jié)果,對記錄集的更改最后會被告處理結(jié)果,對記錄集的更改最后會被傳送到原始表。傳送到原始表。29ADO控件的方法:控件的方法:記錄集中數(shù)據(jù)的增、刪、改涉及到記錄
22、集中數(shù)據(jù)的增、刪、改涉及到4 4個(gè)方法:個(gè)方法: 1. UpdateControls 更新綁定控件的內(nèi)容。更新綁定控件的內(nèi)容。2.AddNew2.AddNew方法方法 在記錄集中增加入一個(gè)新行在記錄集中增加入一個(gè)新行3.Delete3.Delete方法方法 刪除記錄集中的當(dāng)前記錄刪除記錄集中的當(dāng)前記錄4.Update4.Update方法方法 確定修改并保存到數(shù)據(jù)源中確定修改并保存到數(shù)據(jù)源中5.CancelUpdate5.CancelUpdate方法方法 取消未調(diào)用取消未調(diào)用Update方法前對記錄所做的所有修改方法前對記錄所做的所有修改 30增加新記錄增加新記錄 2增加新記錄增加新記錄(1)
23、調(diào)用調(diào)用AddNewAddNew方法增加一條空記錄方法增加一條空記錄(2) 給新記錄各字段賦值給新記錄各字段賦值(可以通過綁定控件直可以通過綁定控件直接輸入,或使用程序代碼給字段賦值,格式為:接輸入,或使用程序代碼給字段賦值,格式為: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) 定位被刪除的記錄使之成為當(dāng)前記錄定位被刪除的記錄使之成為當(dāng)前記錄(2)
24、 調(diào)用調(diào)用DeleteDelete方法方法(3) 移動記錄指針移動記錄指針注意:使用注意:使用DeleteDelete方法當(dāng)前記錄立即刪除,不方法當(dāng)前記錄立即刪除,不加任何的警告或者提示。刪除一條記錄后,綁加任何的警告或者提示。刪除一條記錄后,綁定控件仍舊顯示該記錄的內(nèi)容。因此,必須移定控件仍舊顯示該記錄的內(nèi)容。因此,必須移動記錄指針?biāo)⑿陆壎丶?。動記錄指針?biāo)⑿陆壎丶?。本章目錄本章目?2修改修改記錄記錄 4.修改記錄修改記錄當(dāng)改變數(shù)據(jù)項(xiàng)的的內(nèi)容時(shí),當(dāng)改變數(shù)據(jù)項(xiàng)的的內(nèi)容時(shí),ADO自動進(jìn)入編自動進(jìn)入編輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的指針或調(diào)用指針
25、或調(diào)用UpdateUpdate方法,即可確定所做的修方法,即可確定所做的修改。改。例例11.6在例在例10.5的基礎(chǔ)上加入的基礎(chǔ)上加入“新增新增”、“刪刪除除”、“更新更新”、“放棄放棄”和和“結(jié)束結(jié)束”5個(gè)按個(gè)按鈕,通過對按鈕的編程建立增、刪、改功能鈕,通過對按鈕的編程建立增、刪、改功能 本章目錄本章目錄33查找 Find方法方法n在在Recordset對象中查找與指定條件相符的一條記錄,對象中查找與指定條件相符的一條記錄,并使之成為當(dāng)前記錄。如果找不到,則記錄指針指在并使之成為當(dāng)前記錄。如果找不到,則記錄指針指在記錄集末尾。記錄集末尾。nRecordset.Find 搜索條件搜索條件 ,位
26、移位移 , 搜索方向搜索方向, 開開始位置始位置n例:10.6mno = InputBox(請輸入學(xué)號請輸入學(xué)號, 查找窗查找窗)Adodc1.Recordset.find 學(xué)號學(xué)號= & mno & , , , 1 5. Move方法組方法組 Move方法可代替對數(shù)據(jù)控件對象的方法可代替對數(shù)據(jù)控件對象的4個(gè)箭個(gè)箭頭按鈕的操作遍歷整個(gè)記錄集。頭按鈕的操作遍歷整個(gè)記錄集。 (1) MoveFirst方法移至第方法移至第1條記錄。條記錄。 (2) MoveLast方法移至最后一條記錄。方法移至最后一條記錄。 (3) MoveNext方法移至下一條記錄。方法移至下一條記錄。 (4)
27、MovePrevious方法移至上一條記錄。方法移至上一條記錄。 (5) Move n 方法向前或向后移方法向前或向后移n條記錄。條記錄。 例例10.6用命令按鈕代替數(shù)據(jù)控件對象的用命令按鈕代替數(shù)據(jù)控件對象的4個(gè)個(gè)箭頭按鈕的功能箭頭按鈕的功能,使用使用Find方法查找記錄方法查找記錄35ADO控件的事件:控件的事件:nWILLMove和和MoveComplete事件:事件:n當(dāng)某種方法改變記錄集的指針使其移動當(dāng)某種方法改變記錄集的指針使其移動時(shí),產(chǎn)生時(shí),產(chǎn)生WillMove事件。事件。n一條記錄成為當(dāng)前記錄后,產(chǎn)生一條記錄成為當(dāng)前記錄后,產(chǎn)生MoveComplete事件事件36nWILLCha
28、ngeField和和FieldChangeComplete事件:事件:nWILLChangeField當(dāng)前記錄集中的當(dāng)前記當(dāng)前記錄集中的當(dāng)前記錄的一個(gè)或多個(gè)字段發(fā)生變化時(shí)觸發(fā)。錄的一個(gè)或多個(gè)字段發(fā)生變化時(shí)觸發(fā)。nFieldChangeComplete 當(dāng)前字段發(fā)生變當(dāng)前字段發(fā)生變化后觸發(fā)?;笥|發(fā)。37nWILLChangeRecord和和RecordChangeComplete事件:事件:nWILLChangeRecord當(dāng)前記錄集中的當(dāng)前記錄集中的當(dāng)前記錄的一個(gè)或多個(gè)記錄發(fā)生變化時(shí)當(dāng)前記錄的一個(gè)或多個(gè)記錄發(fā)生變化時(shí)觸發(fā)。觸發(fā)。nRecordChangeComplete 當(dāng)前記錄完當(dāng)前記錄完
29、成后時(shí)觸發(fā)。成后時(shí)觸發(fā)。38計(jì)算機(jī)計(jì)算機(jī)丁保華丁保華500011物理李明 500201數(shù)學(xué)莊前500102專業(yè)姓名學(xué)號Adodc1.Recordset. AddNew 增加記錄增加記錄數(shù)據(jù)庫UpData填入新數(shù)據(jù)填入新數(shù)據(jù) 編輯記錄編輯記錄刪除記錄刪除記錄 給各字段賦值給各字段賦值 調(diào)用調(diào)用Delete方法方法 調(diào)用調(diào)用Update方法方法 移動記錄指針移動記錄指針 計(jì)算機(jī)計(jì)算機(jī)丁保華丁保華500011物理李明500201數(shù)學(xué)莊前500102專業(yè)姓名學(xué)號數(shù)據(jù)修改小結(jié)數(shù)據(jù)修改小結(jié)本章目錄本章目錄39n返回唯一標(biāo)識 Recordset 對象中當(dāng)前記錄的書簽,或者將 Recordset 對象的當(dāng)前記
30、錄設(shè)置為由有效書簽所標(biāo)識的記錄。n設(shè)置和返回值設(shè)置和返回值n設(shè)置或返回計(jì)算有效書簽的變體型變體型表達(dá)式。n說明說明n使用 Bookmark 屬性可保存當(dāng)前記錄的位置并隨時(shí)返回到該記錄。書簽只能在支持書簽功能的 Recordset 對象中使用。n打開 Recordset 對象時(shí),其每個(gè)記錄都有唯一的書簽。要保存當(dāng)前記錄的書簽,請將 Bookmark 屬性的值賦給一個(gè)變量。移動到其他記錄后要快速返回到該記錄,請將該 Recordset 對象的 Bookmark 屬性設(shè)置為該變量的值。n用戶可能無法查看書簽的值,也同樣無法對書簽直接進(jìn)行比較(指向同一記錄的兩個(gè)書簽的值可能不同)。40查詢與統(tǒng)計(jì)查詢與
31、統(tǒng)計(jì) 通過通過SQL語句從數(shù)據(jù)源中獲取信息,查詢條件語句從數(shù)據(jù)源中獲取信息,查詢條件由由SelectSelect語句的語句的WhereWhere短語構(gòu)成,使用短語構(gòu)成,使用And與與Or運(yùn)算符組合出復(fù)雜的查詢條件運(yùn)算符組合出復(fù)雜的查詢條件。模糊查詢使。模糊查詢使用運(yùn)算符用運(yùn)算符LikeLike,百分號,百分號%代替任意個(gè)不確定的代替任意個(gè)不確定的內(nèi)容,用下劃線內(nèi)容,用下劃線_ _代替一個(gè)不確定的內(nèi)容。代替一個(gè)不確定的內(nèi)容。例如,例如,姓名姓名 Like Like 張張% % 將查詢所有張姓的人員將查詢所有張姓的人員例例10.7 根據(jù)輸入的專業(yè)名稱,在網(wǎng)格內(nèi)顯示根據(jù)輸入的專業(yè)名稱,在網(wǎng)格內(nèi)顯示S
32、tudent.mdb數(shù)據(jù)庫中該專業(yè)所有學(xué)生信息數(shù)據(jù)庫中該專業(yè)所有學(xué)生信息 本章目錄本章目錄41查詢與統(tǒng)計(jì)查詢與統(tǒng)計(jì) 例例10.8使用數(shù)據(jù)列表框或數(shù)據(jù)組合框提供專業(yè)名使用數(shù)據(jù)列表框或數(shù)據(jù)組合框提供專業(yè)名稱,實(shí)現(xiàn)查詢稱,實(shí)現(xiàn)查詢“Select * From 基本情況表基本情況表 Where 專業(yè)專業(yè) = & DataList1.BoundText & 本章目錄本章目錄42n例例10.9使用使用SQL的函數(shù)和分組功能,統(tǒng)計(jì)各專業(yè)的函數(shù)和分組功能,統(tǒng)計(jì)各專業(yè)的人數(shù)、年齡分布。的人數(shù)、年齡分布。n Adodc1.RecordSource = select 專業(yè)專業(yè),count (*) a
33、s 人數(shù)人數(shù) from 基本情況表基本情況表 group by 專業(yè)專業(yè) Adodc1.RefreshnAdodc1.RecordSource = select year(出生年出生年月月) as 出生年份出生年份,count (*) as 人數(shù)人數(shù) from 基本情基本情況表況表 group by year(出生年月出生年月) Adodc1.Refresh43DBGrid和DataGrid nData Bound Grid Control輸出記錄輸出記錄 該控該控件是輸出數(shù)據(jù)庫記錄最有用也是最多的控件。件是輸出數(shù)據(jù)庫記錄最有用也是最多的控件。但該控件在一些電腦上可能用不到但該控件在一些電腦上
34、可能用不到. DataGrid 控件是一種類似于電子數(shù)據(jù)表的控件是一種類似于電子數(shù)據(jù)表的綁定控件,它是所有數(shù)據(jù)庫感知控件中最有用綁定控件,它是所有數(shù)據(jù)庫感知控件中最有用也是用得最多的控件。它可以用來顯示整個(gè)數(shù)也是用得最多的控件。它可以用來顯示整個(gè)數(shù)據(jù)表或表的部分內(nèi)容或者幾個(gè)表的混合內(nèi)據(jù)表或表的部分內(nèi)容或者幾個(gè)表的混合內(nèi)容。容。 nDBGRID,用在用在DAO下下nDataGrid 控件是一種類似于電子數(shù)據(jù)表的綁控件是一種類似于電子數(shù)據(jù)表的綁定控件定控件,用在用在ADO下下. 444546nCommandType屬性:指定獲得記錄源的命令類屬性:指定獲得記錄源的命令類型。型。nrecordSou
35、rce:確定具體可以訪問的數(shù)據(jù)來源。:確定具體可以訪問的數(shù)據(jù)來源。屬性值可以是數(shù)據(jù)庫中的單個(gè)表名,也可以是屬性值可以是數(shù)據(jù)庫中的單個(gè)表名,也可以是SQL語句。語句。nADO控件的其它屬性、事件和方法:控件的其它屬性、事件和方法:nRecordset屬性:產(chǎn)生屬性:產(chǎn)生ADO控件實(shí)際可以操作的記控件實(shí)際可以操作的記錄集對象。錄集對象。nEOFAction和和BOFAction屬性:屬性:n當(dāng)記錄指針指向記錄集的開始或結(jié)束時(shí),以上屬性當(dāng)記錄指針指向記錄集的開始或結(jié)束時(shí),以上屬性決定數(shù)據(jù)控件要采取決定數(shù)據(jù)控件要采取 的操作,當(dāng)?shù)牟僮?,?dāng)EOFAction為為2時(shí),時(shí),記錄指針到達(dá)記錄集的結(jié)尾處,在尾
36、部自動加入一記錄指針到達(dá)記錄集的結(jié)尾處,在尾部自動加入一條空記錄。條空記錄。47nRefresh方法:刷新方法:刷新ADO數(shù)據(jù)控件的連接屬性。數(shù)據(jù)控件的連接屬性。4810.2.2 數(shù)據(jù)綁定數(shù)據(jù)綁定 什么是數(shù)據(jù)綁定?什么是數(shù)據(jù)綁定?數(shù)據(jù)綁定是一個(gè)過程,即在運(yùn)行時(shí)自動為與記錄數(shù)據(jù)綁定是一個(gè)過程,即在運(yùn)行時(shí)自動為與記錄集中的元素關(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ù)綁定和復(fù)雜數(shù)據(jù)綁定窗體有簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定就是將控
37、件綁定到單個(gè)數(shù)據(jù)字段。簡單數(shù)據(jù)綁定就是將控件綁定到單個(gè)數(shù)據(jù)字段。每個(gè)控件僅顯示數(shù)據(jù)集中的一個(gè)字段值。最常用每個(gè)控件僅顯示數(shù)據(jù)集中的一個(gè)字段值。最常用的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標(biāo)簽。的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標(biāo)簽。在設(shè)計(jì)或運(yùn)行時(shí)設(shè)置控件屬性建立綁定在設(shè)計(jì)或運(yùn)行時(shí)設(shè)置控件屬性建立綁定: :DataSourceDataSource:指定:指定ADOADO數(shù)據(jù)控件數(shù)據(jù)控件DataFieldDataField:設(shè)置記錄集中有效的字段:設(shè)置記錄集中有效的字段 本章目錄本章目錄50簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定 例例10.2 數(shù)據(jù)綁定的操作過程數(shù)據(jù)綁定的操作過程 界面設(shè)計(jì)界面設(shè)計(jì) 建立連接和產(chǎn)
38、生記錄集建立連接和產(chǎn)生記錄集 設(shè)置設(shè)置綁定屬性綁定屬性 本章目錄本章目錄51復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定 復(fù)雜數(shù)據(jù)綁定允許將多個(gè)數(shù)據(jù)字段綁定到一個(gè)控復(fù)雜數(shù)據(jù)綁定允許將多個(gè)數(shù)據(jù)字段綁定到一個(gè)控件,同時(shí)顯示記錄源中的多行或多列。件,同時(shí)顯示記錄源中的多行或多列。支持復(fù)雜數(shù)據(jù)綁定的常用控件:支持復(fù)雜數(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ù)列表框數(shù)據(jù)列表框n DataCombo DataCombo 數(shù)據(jù)組合框數(shù)據(jù)組合框本章目錄本章目錄52復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁
39、定 例例10.3復(fù)雜數(shù)據(jù)綁定的操作過程復(fù)雜數(shù)據(jù)綁定的操作過程 界面設(shè)計(jì)界面設(shè)計(jì) 建立連接和產(chǎn)生記錄集建立連接和產(chǎn)生記錄集 數(shù)據(jù)綁定數(shù)據(jù)綁定 本例本例DataGrid控件要綁定不同的表,故需要通過控件要綁定不同的表,故需要通過代碼設(shè)置控件的代碼設(shè)置控件的DataSource 屬性。屬性。 程序代碼程序代碼 本章目錄本章目錄53復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定 例例10.4使用使用SQL語句選擇數(shù)據(jù)表部分?jǐn)?shù)據(jù)構(gòu)成記語句選擇數(shù)據(jù)表部分?jǐn)?shù)據(jù)構(gòu)成記錄集。在網(wǎng)格上綁定部分字段,需要對數(shù)據(jù)網(wǎng)格錄集。在網(wǎng)格上綁定部分字段,需要對數(shù)據(jù)網(wǎng)格布局進(jìn)行編輯。布局進(jìn)行編輯。本章目錄本章目錄54 VB VB數(shù)據(jù)庫訪問過程數(shù)據(jù)庫訪
40、問過程 本章目錄本章目錄555610.3 10.3 記錄集對象記錄集對象10.3.1 瀏覽記錄集瀏覽記錄集1. AbsoloutPostionAbsoloutPostion屬性屬性返回當(dāng)前記錄指針值,從返回當(dāng)前記錄指針值,從1到到Recordset對象所對象所含記錄數(shù)。含記錄數(shù)。2. 本章目錄本章目錄573. RecordCountRecordCount屬性屬性對對Recordset對象中的記錄計(jì)數(shù),該屬性為只對象中的記錄計(jì)數(shù),該屬性為只讀屬性。讀屬性。4. FindFind方法方法在在Recordset對象中查找與指定條件相符的一對象中查找與指定條件相符的一條記錄,并使之成為當(dāng)前記錄。如果找
41、不到,條記錄,并使之成為當(dāng)前記錄。如果找不到,則記錄指針指在記錄集末尾。則記錄指針指在記錄集末尾。Recordset.Find Recordset.Find 搜索條件搜索條件 ,位移位移 , 搜索搜索方向方向, 開始位置開始位置本章目錄本章目錄58本章目錄本章目錄59MoveNext MoveLastMoveFirstMovePreviousAdodc1.Recordset. Find 學(xué)號學(xué)號= 500011 計(jì)算機(jī)計(jì)算機(jī)丁保華丁保華500011物理李明 500201數(shù)學(xué)莊前500102專業(yè)姓名學(xué)號EOFBOF記錄集屬性方法小結(jié)記錄集屬性方法小結(jié)本章目錄本章目錄6010.3.2 10.3.2
42、 記錄集的編輯記錄集的編輯 本章目錄本章目錄61增加新記錄增加新記錄 2增加新記錄增加新記錄(1) 調(diào)用調(diào)用AddNewAddNew方法增加一條空記錄方法增加一條空記錄(2) 給新記錄各字段賦值給新記錄各字段賦值(可以通過綁定控件直可以通過綁定控件直接輸入,或使用程序代碼給字段賦值,格式為:接輸入,或使用程序代碼給字段賦值,格式為:Recordset.FieldsRecordset.Fields(字段名字段名) = 值值(3) 調(diào)用調(diào)用UpdateUpdate方法,確定所做的添加,將方法,確定所做的添加,將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫 本章目錄本章目錄62刪除記錄刪除記錄
43、3. 刪除記錄刪除記錄(1) 定位被刪除的記錄使之成為當(dāng)前記錄定位被刪除的記錄使之成為當(dāng)前記錄(2) 調(diào)用調(diào)用DeleteDelete方法方法(3) 移動記錄指針移動記錄指針注意:使用注意:使用DeleteDelete方法當(dāng)前記錄立即刪除,不方法當(dāng)前記錄立即刪除,不加任何的警告或者提示。刪除一條記錄后,綁加任何的警告或者提示。刪除一條記錄后,綁定控件仍舊顯示該記錄的內(nèi)容。因此,必須移定控件仍舊顯示該記錄的內(nèi)容。因此,必須移動記錄指針?biāo)⑿陆壎丶?。動記錄指針?biāo)⑿陆壎丶?。本章目錄本章目?3修改修改記錄記錄 4.修改記錄修改記錄當(dāng)改變數(shù)據(jù)項(xiàng)的的內(nèi)容時(shí),當(dāng)改變數(shù)據(jù)項(xiàng)的的內(nèi)容時(shí),ADO自動進(jìn)入編自動
44、進(jìn)入編輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的輯狀態(tài),在對數(shù)據(jù)編輯后,只要改變記錄集的指針或調(diào)用指針或調(diào)用UpdateUpdate方法,即可確定所做的修方法,即可確定所做的修改。改。例例11.6在例在例10.5的基礎(chǔ)上加入的基礎(chǔ)上加入“新增新增”、“刪刪除除”、“更新更新”、“放棄放棄”和和“結(jié)束結(jié)束”5個(gè)按個(gè)按鈕,通過對按鈕的編程建立增、刪、改功能鈕,通過對按鈕的編程建立增、刪、改功能 本章目錄本章目錄64計(jì)算機(jī)計(jì)算機(jī)丁保華丁保華500011物理李明 500201數(shù)學(xué)莊前500102專業(yè)姓名學(xué)號Adodc1.Recordset. AddNew 增加記錄增加記錄數(shù)據(jù)庫UpData填入新數(shù)據(jù)填入新數(shù)據(jù) 編輯記錄編輯記錄刪除記錄刪除記錄 給各字段賦值給各字段賦值 調(diào)用調(diào)用Delete方法方法 調(diào)用調(diào)用Update方法方法 移動記錄指針移動記錄指針 計(jì)算機(jī)計(jì)算機(jī)丁保華丁保華500011物理李明500201數(shù)學(xué)莊前500102專業(yè)姓名學(xué)號數(shù)據(jù)修改小結(jié)數(shù)據(jù)修改小結(jié)本章目錄本章目錄6510.3.4 BLOB數(shù)據(jù)處理數(shù)據(jù)處理 二進(jìn)制大型對象二進(jìn)制大型對象(B
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 桑蠶絲企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 中性束射頻離子源功率耦合分析及實(shí)驗(yàn)研究
- 家用智能體脂秤企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 防凍劑企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報(bào)告
- 健康園區(qū)管理AI智能設(shè)備企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 股票激勵合同范本
- 基因工程抗高血壓藥物行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 香檸檬油(佛手油)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 可降解縫合線技術(shù)創(chuàng)新行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 染發(fā)用品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報(bào)告
- 2025年不停電電源(UPS)項(xiàng)目合作計(jì)劃書
- 2025年國家林業(yè)和草原局直屬事業(yè)單位第一批招聘應(yīng)屆畢業(yè)生96人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年春季開學(xué)典禮校長講話稿-少年無畏凌云志扶搖直上入云蒼
- 2025寒假開學(xué)第一課 課件【1】
- 山東省泰安市新泰市2024-2025學(xué)年(五四學(xué)制)九年級上學(xué)期1月期末道德與法治試題(含答案)
- 1《北京的春節(jié)》課后練習(xí)(含答案)
- (完整版)陸河客家請神書
- 2025年行業(yè)協(xié)會年度工作計(jì)劃
- DB3502T 160-2024 工業(yè)產(chǎn)品質(zhì)量技術(shù)幫扶和質(zhì)量安全監(jiān)管聯(lián)動工作規(guī)范
- 2025年學(xué)校教師政治理論學(xué)習(xí)計(jì)劃
- 2024-2024年高考全國卷英語語法填空
評論
0/150
提交評論