VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理_第1頁(yè)
VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理_第2頁(yè)
VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理_第3頁(yè)
VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理_第4頁(yè)
VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

VB程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理平陽中學(xué)章青虎Windows732位(XP)VisualBasic6.0SP6Access2010(2003)軟硬件環(huán)境目錄二、ADO數(shù)據(jù)訪問技術(shù)及對(duì)象使用實(shí)例三、ADO控件簡(jiǎn)介一、SQL查詢基礎(chǔ)(一)SQL語言及其功能、特點(diǎn)(二)SELECT語句的基礎(chǔ)用法(三)數(shù)據(jù)更新一、SQL查詢基礎(chǔ)(一)SQL語言及其功能、特點(diǎn)SQL:StructuredQueryLanguage結(jié)構(gòu)化查詢語言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語言。SQL功能:用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng);同時(shí)也是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。結(jié)構(gòu)化查詢語言是高級(jí)的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng),可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。其功能可歸結(jié)為查詢、定義、操縱和控制四個(gè)方面:SQL功能常用語句數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操縱INSERT,DELETE,UPDATE數(shù)據(jù)控制GRANT,REVOKE(二)SELECT語句的基礎(chǔ)用法SELECT[DISTINCT]目標(biāo)列表達(dá)式1[AS別名][,目標(biāo)列表達(dá)式2][AS別名],…FROM表名1[,表名2]…[WHERE條件表達(dá)式][GROUPBY列名1[HAVING組條件表達(dá)式]][ORDERBY列名2[ASC|DESC]];功能從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),并以表格形式返回查詢結(jié)果。語法SELECT查詢過程查詢杭州到南京的空調(diào)特快數(shù)據(jù)庫(kù)服務(wù)器發(fā)送指令返回結(jié)果查詢將產(chǎn)生一個(gè)虛擬表,稱為“記錄集”,其中數(shù)據(jù)是從數(shù)據(jù)庫(kù)現(xiàn)有表中過濾出來的。車次出發(fā)站到達(dá)站出發(fā)時(shí)間到達(dá)時(shí)間T282杭州南京17:1923:20T7786杭州南京10:0816:19T112杭州南京9:4515:41車次出發(fā)站到達(dá)站出發(fā)時(shí)間到達(dá)時(shí)間T282杭州南京17:1923:20K526杭州東上海南2:013:54K1124天津廣州東10:3920:57T7786杭州南京10:0816:19T57北京西重慶北11:486:31T112杭州南京9:4515:41T74長(zhǎng)春天津10:5720:22T164上海拉薩19:3620:15SELECT車次,出發(fā)站,到達(dá)站,出發(fā)時(shí)間,到達(dá)時(shí)間FROMtickets.accdbWHERE出發(fā)站=‘杭州‘AND到達(dá)站=‘南京‘AND車次類型=‘特快‘;應(yīng)用基礎(chǔ)查詢1.設(shè)定要查詢的列【例】查詢景區(qū)表中所有景區(qū)名稱、景區(qū)編號(hào)及地址。SELECTScenicName,ScenicId,AddressFROMScenic;分析用戶在查詢時(shí)可以根據(jù)應(yīng)用的需要,通過SELECT子句改變列的顯示順序。應(yīng)用基礎(chǔ)查詢【例】查詢景區(qū)表中所有景區(qū)的全部信息。SELECT*FROMScenic;分析通配符“*”表示所有字段,這種查詢也稱為全表查詢。應(yīng)用基礎(chǔ)查詢【例】查詢等級(jí)表中所有景區(qū)編號(hào)及其等級(jí)的評(píng)定年度。SelectScenicIdAS景區(qū)編號(hào),EvalYearAS評(píng)定年度FROMGrade;分析AS用于指定返回結(jié)果中的別名應(yīng)用基礎(chǔ)查詢【例】查詢等級(jí)表中所有景區(qū)編號(hào)及其被評(píng)為當(dāng)前等級(jí)的年數(shù)(至2014年為止)。SELECTScenicId,2014-EvalYearas評(píng)定等級(jí)的年數(shù)FROMGrade;分析2014-EvalYear的值目標(biāo)列表達(dá)式不僅可以是字段名,還可以是算術(shù)表達(dá)式、字符串常量、函數(shù)等。反思總結(jié)基礎(chǔ)查詢查詢滿足條件的記錄,可以通過WHERE子句設(shè)計(jì)查詢條件。(1)比較大小常用運(yùn)算符:=,<>或!=,>,<,>=,<=及NOT,AND,OR如WHERERegDate<2013/1/1ANDSex='男';(2)確定范圍指定查找字段的值在某范圍內(nèi),使用BETWEEN…AND…,反之使用NOTBETWEEN…AND…如WHERERegDate

BETWEEN2012/1/1AND2014/1/1;(3)確定集合IN于查找字段值屬于指定集合的記錄,與之相對(duì)的是NOTIN,用于查找字段值不屬于指定集合的記錄。如WHERERPDays

IN(1,3);反思總結(jié)基礎(chǔ)查詢查詢滿足條件的記錄,可以通過WHERE子句設(shè)計(jì)查詢條件。(4)字符匹配LIKE用來進(jìn)行字符串的匹配,與之相對(duì)的是NOTLIKE。進(jìn)行匹配時(shí)可以使用通配符*和?,*代表任意長(zhǎng)度的字符串,?代表任意單個(gè)字符。如WHEREScenicId

LIKE'?J*';(5)空值的查詢ISNULL和ISNOTNULL用來查詢空值和非空值。如WHEREDetailsISNULL;基礎(chǔ)查詢5.使用聚合函數(shù)在SELECT語句中,可以使用聚合函數(shù)對(duì)表中的記錄進(jìn)行統(tǒng)計(jì),常用的聚合函數(shù)包括:COUNT()統(tǒng)計(jì)結(jié)果集中記錄的數(shù)目SUM()統(tǒng)計(jì)結(jié)果集中指定列的和AVG()統(tǒng)計(jì)結(jié)果集中指定列的平均值MAX()統(tǒng)計(jì)結(jié)果集中指定列的最大值MIN()統(tǒng)計(jì)結(jié)果集中指定列的最小值應(yīng)用基礎(chǔ)查詢【例】查詢等級(jí)表中景區(qū)總數(shù)。SELECTCOUNT(*)AS景區(qū)總數(shù)FROMGrade;分析統(tǒng)計(jì)并返回了Grade表中的記錄數(shù)目基礎(chǔ)查詢6.分組統(tǒng)計(jì)GROUPBY子句可將查詢結(jié)果按列中的數(shù)據(jù)進(jìn)行分組,有相同值的行被劃為一組。對(duì)查詢結(jié)果進(jìn)行分組的目的是細(xì)化集函數(shù)的作用對(duì)象。若查詢結(jié)果未分組,集函數(shù)將作用于整個(gè)查詢結(jié)果,整個(gè)查詢結(jié)果只有一個(gè)函數(shù)值;分組后,集函數(shù)將作用于每一個(gè)組,即每個(gè)組有一個(gè)函數(shù)值。通常GROUPBY與聚合函數(shù)一同使用。應(yīng)用基礎(chǔ)查詢【例】查詢等級(jí)表中各地景區(qū)數(shù)。SELECTAreaAS所屬地區(qū),COUNT(ScenicId)AS景區(qū)數(shù)FROMGradeGROUPBYArea;分析本次查詢中,將Area字段值相等的記錄劃為一組,并統(tǒng)計(jì)出各組的記錄數(shù)。應(yīng)用基礎(chǔ)查詢【例】查詢等級(jí)表中浙江省的景區(qū)數(shù)。SELECTAreaAS所屬地區(qū),COUNT(ScenicId)AS景區(qū)數(shù)FROMGradeGROUPBYAreaHAVINGArea='浙江'分析本次查詢中,先將Area字段值相等的記錄劃為一組,然后通過HAVING篩選出滿足“Area='浙江'”條件的組。通常HAVING子句被限制于已經(jīng)在SELECT子句中定義的列和聚合表達(dá)式上多表查詢一個(gè)數(shù)據(jù)庫(kù)中的多個(gè)數(shù)據(jù)表之間一般都存在某種內(nèi)在聯(lián)系,它們共同提供有用信息。若一個(gè)查詢同時(shí)涉及兩個(gè)及以上的表,稱之為多表查詢或鏈接查詢。兩張表間有一個(gè)相同的字段,才能進(jìn)行有效的多表查詢。查詢時(shí)列名前加表名或表別名前輟,如果字段在兩個(gè)表中是唯一的可以不加。(三)數(shù)據(jù)更新1、INSERT語句的功能及用法2、UPDATE語句的功能及用法3、DELETE語句的功能及用法1、插入數(shù)據(jù)--INSERT語句INSERTINTO表名[(字段1,…,字段N)]VALUES(表達(dá)式1,…,表達(dá)式N);功能INSERT語句的功能是向數(shù)據(jù)表中插入新的記錄。語法字段與表達(dá)式必須成對(duì)出現(xiàn)表達(dá)式的值必須與其對(duì)應(yīng)字段的數(shù)據(jù)類型吻合。如果要插入的數(shù)據(jù)是全體字段,可以省略VALUES前的字段列表。應(yīng)用INSERT語句字段與表達(dá)式必須成對(duì)出現(xiàn),且對(duì)應(yīng)的數(shù)據(jù)類型相同?!纠吭凇暗燃?jí)”表中插入一條景區(qū)編號(hào)為“SC0002”的記錄。INSERTINTOGrade(ScenicId,Area,Grade,EvalYear)VALUES("SC0002","四川","5A","2007");分析表中新增了添加的新記錄,記錄數(shù)增加為6。2、數(shù)據(jù)更新--UPDATE語句UPDATE表名SET字段1=表達(dá)式[,字段2=表達(dá)式2,……,字段N=表達(dá)式N][WHERE條件]功能UPDATE語句的功能是更新表中指定記錄中指定字段的值。語法UPDATE語句對(duì)指定表中滿足WHERE子句中條件的記錄進(jìn)行修改,具體修改內(nèi)容在SET子句中設(shè)定。表達(dá)式的值必須與其對(duì)應(yīng)字段的數(shù)據(jù)類型吻合。UPDATE的操作是不可逆的,即做出的修改是無法撤消的。應(yīng)用UPDATE語句修改一條記錄的值【例】添加winnie的預(yù)計(jì)天數(shù)為2天。UPDATETravelPlanSETPlanDays=2WHEREUserName="winnie";分析winnie所在記錄的預(yù)計(jì)天數(shù)值被修改為2。應(yīng)用UPDATE語句修改多條記錄的值【例】將lee的出行天數(shù)均減少1天。UPDATETravelPlan

SETPlanDays=PlanDays-1WHEREUserName="lee";分析lee所在兩條記錄的預(yù)計(jì)天數(shù)值均減少了1天,分別被修改為3、23、刪除數(shù)據(jù)--DELETE語句DELETEFROM表名[WHERE條件]功能DELETE語句的功能為刪除表中指定的記錄。語法DELETE語句對(duì)滿足WHERE子句中條件的所有記錄執(zhí)行刪除操作。省略WHERE子句,則刪除表中全部記錄,但表結(jié)構(gòu)仍在,即DELETE語句刪除的是表中的數(shù)據(jù)。應(yīng)用DELETE語句刪除部分記錄【例】刪除用戶名為“l(fā)ee”的所有記錄。DELETEFROMTravelPlanWHEREUserName="lee";分析lee所在兩條記錄均被刪除,記錄數(shù)由4變?yōu)?。應(yīng)用DELETE語句刪除全部記錄【例】刪除所有用戶的記錄。DELETEFROMTravelPlan分析旅行計(jì)劃表中所有記錄均被刪除。刪除數(shù)據(jù)--DELETE語句DELETEFROM表名[WHERE條件]功能DELETE語句的功能為刪除表中指定的記錄。語法DELETE語句對(duì)滿足WHERE子句中條件的所有記錄執(zhí)行刪除操作。省略WHERE子句,則刪除表中全部記錄,但表結(jié)構(gòu)仍在,即DELETE語句刪除的是表中的數(shù)據(jù)。應(yīng)用DELETE語句刪除部分記錄【例】刪除用戶名為“l(fā)ee”的所有記錄。DELETEFROMTravelPlanWHEREUserName="lee";分析lee所在兩條記錄均被刪除,記錄數(shù)由4變?yōu)?。二、ADO數(shù)據(jù)訪問技術(shù)(一)ADO數(shù)據(jù)模型(二)Connection對(duì)象及應(yīng)用(三)Command對(duì)象及應(yīng)用(四)Recordset對(duì)象及應(yīng)用(一)ADO對(duì)象模型

ADO(ActiveXDataObjects)數(shù)據(jù)庫(kù)訪問技術(shù),采用OLEDB的數(shù)據(jù)訪問模式。1.ADO對(duì)象模型組成三個(gè)對(duì)象成員:ConnectionCommand

Recordset幾個(gè)集合對(duì)象:Errors

ParametersFieldsProperties指定連接數(shù)據(jù)來源發(fā)出命令信息從數(shù)據(jù)源獲取所需數(shù)據(jù)查詢命令的返回的記錄集訪問數(shù)據(jù)源時(shí)所返回的錯(cuò)誤信息與命令對(duì)象有關(guān)的參數(shù)記錄集中某個(gè)字段的信息每個(gè)ADO對(duì)象都有一組惟一的屬性,用來描述或控制對(duì)象2.ADO對(duì)象基本操作流程(1)初始化COM庫(kù),引入ADO庫(kù)定義文件;(2)用Connection對(duì)象連接數(shù)據(jù)庫(kù);(3)利用建立好的連接,通過Connection、Command對(duì)象執(zhí)行SQL命令,或利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢、處理;(4)使用完畢后關(guān)閉連接釋放對(duì)象。3.引入ADO庫(kù)定義文件在VisualBasic程序中使用ADO對(duì)象,必須先為當(dāng)前工程引用ADO的對(duì)象庫(kù)。方法:執(zhí)行“工程”菜單中“引用”命令,彈出“引用”對(duì)話框,如圖所示。單擊“確定”選擇該選項(xiàng)(不同環(huán)境下ADO的版本號(hào)可能不同)(二)Connection對(duì)象及其應(yīng)用Connection用來創(chuàng)建到數(shù)據(jù)庫(kù)建立連接。1.常用屬性

ConnectionString屬性,指定用于建立連接數(shù)據(jù)源的信息。

【例】創(chuàng)建到數(shù)據(jù)庫(kù)Scenic.accdb的鏈接。

DimconnAsADODB.Connection

Setconn=newADODB.Connection

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+App.Path+"\Scenic.accdb“

Access2003連接語句"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\Scenic.mdb"conn.ConnectionString=Mode屬性Mode屬性,指定Connection對(duì)象修改數(shù)據(jù)的權(quán)限。其值如下:常量 說明adModeUnknown

默認(rèn)值。表明權(quán)限尚未設(shè)置或無法確定adModeRead

只讀權(quán)限adModeWrite

只寫權(quán)限adModeReadWrite

讀寫權(quán)限adModeShareDenyRead

禁止其他用戶使用讀權(quán)限打開連接adModeShareDenyWrite

禁止其他用戶使用寫權(quán)限打開連接adModeShareExclusive

禁止其他用戶打開連接adModeShareDenyNone

允許其他人以任何權(quán)限打開連接State屬性State屬性,返回Connection對(duì)象的狀態(tài)。其值如下:常量 說明adStateClosed

對(duì)象已關(guān)閉adStateOpen

對(duì)象已打開adStateConnecting

對(duì)象正在連接adStateExecuting

對(duì)象正在執(zhí)行命令adStateFetching

正在檢索對(duì)象的行2.Connection對(duì)象的常用方法Open方法,打開到數(shù)據(jù)源的連接。語法如下:Connection對(duì)象.OpenConnectionString,UserID,PassWord,Options

以下參數(shù)均為可選項(xiàng)

ConnectionString

:包含連接信息的字符串。

UserID

:包含建立連接時(shí)所使用的用戶名稱。Password

:字符串,包含建立連接時(shí)所用密碼。Options

:設(shè)置為adConnectAsync,則異步打開連接;

設(shè)置為ConnectComplete當(dāng)連接可用時(shí)將調(diào)用該事件。Close方法,關(guān)閉到數(shù)據(jù)源的連接。Execute方法,在連接上執(zhí)行命令。Cancel方法,取消Open或Execute方法的調(diào)用如果設(shè)置了Connection對(duì)象的ConnectionString屬性,Open方法就不需要設(shè)置參數(shù)了3.Connection對(duì)象應(yīng)用示例【例】使用Connection對(duì)象鏈接到數(shù)據(jù)庫(kù)Scenic.accdb。PrivateSubForm_Load()DimconnAsNewADODB.Connection

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+App.Path+"\Scenic.accdb"

conn.Open

Ifconn.State=adStateOpenThenMsgBox"鏈接已打開"conn.Close

Ifconn.State=adstatecolsedThenMsgBox"鏈接已關(guān)閉"EndSub創(chuàng)建Connection對(duì)象conn

鏈接數(shù)據(jù)庫(kù)路徑打開到數(shù)據(jù)庫(kù)的鏈接判斷鏈接的狀態(tài)關(guān)閉到數(shù)據(jù)庫(kù)的鏈接判斷鏈接的狀態(tài)(三)Command對(duì)象及其應(yīng)用Command對(duì)象,定義將對(duì)數(shù)據(jù)源執(zhí)行的命令。命令對(duì)象在操縱數(shù)據(jù)庫(kù)前需要與一個(gè)已經(jīng)打開的連接對(duì)象(Connection)建立關(guān)聯(lián)。1.常用屬性

(1)ActiveConnection屬性,設(shè)置到數(shù)據(jù)源的連接信息。通過設(shè)置該屬性使打開的鏈接與Command對(duì)象關(guān)聯(lián)。(2)CommandText屬性,定義命令的可執(zhí)行文本。2.常用方法(1)Execute方法,執(zhí)行CommandText屬性指定的查詢、SQL語句或存儲(chǔ)過程。(2)Cancel方法,取消Execute方法的調(diào)用3.Command對(duì)象應(yīng)用示例Command1按鈕“注冊(cè)”按鈕事件代碼PrivateSubCommand1_Click()DimconnAsNewADODB.ConnectionDimcmdAsNewADODB.CommandDimstrSQLAsString

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0; DATASource="&App.Path&"\users1.accdb"

strSQL="INSERTINTOusers(username,userpsd)VALUES('" &Text1&"','"&Text2&"')"

cmd.CommandText=strSQL

conn.OpenSetcmd.ActiveConnection=conn

cmd.Execute

:conn.Close:Setconn=NothingEndSub(四)Recordset對(duì)象及其應(yīng)用Recordset對(duì)象表示從數(shù)據(jù)庫(kù)返回的一系列記錄的集合。一個(gè)Recordset

對(duì)象由記錄和列(字段)組成。通過Recordset可以對(duì)記錄及組成記錄的列進(jìn)行各種操作。1.Recordset對(duì)象的常用屬性(1)ActiveConnection屬性,設(shè)置或返回Recordset對(duì)象所屬的Connection對(duì)象。(2)AbsolutePosition

屬性,指定Recordset

對(duì)象中當(dāng)前記錄的序號(hào)位置。(3)BOF屬性,若當(dāng)前的記錄位置在第一條記錄之前,則返回true,否則返回fasle。

EOF屬性,若當(dāng)前記錄的位置在最后的記錄之后,則返回true,否則返回fasle。1.Recordset對(duì)象的常用屬性(4)RecordCount屬性,返回Recordset對(duì)象中記錄的當(dāng)前數(shù)目。(5)CursorType屬性,設(shè)置或返回一個(gè)Recordset

對(duì)象的游標(biāo)類型。常

量值說

明AdOpenForwardOnly0默認(rèn)值,打開僅向前類型游標(biāo),只能用MoveNext讀取,打開的同時(shí)建立的數(shù)據(jù)庫(kù)的備份,不能即時(shí)體現(xiàn)數(shù)據(jù)庫(kù)記錄狀態(tài),比如記錄的編輯和增刪。AdOpenKeyset1打開鍵集類型游標(biāo),可上下滾動(dòng)游標(biāo),給打開的記錄創(chuàng)建了一個(gè)關(guān)鍵字列表,類似記錄集的描述,訪問的時(shí)候才去取得數(shù)據(jù)值,就是說可以即時(shí)看到修改信息,但是不能即時(shí)得到數(shù)據(jù)是否刪除的信息,因?yàn)檫@個(gè)關(guān)鍵字列表是事先初始化好的。程序中常用此類型。AdOpenDynamic2打開動(dòng)態(tài)類型游標(biāo),完全可滾動(dòng)游標(biāo),可得到數(shù)據(jù)的最新狀態(tài),但執(zhí)行效率也會(huì)有所降低。AdOpenStatic3打開靜態(tài)類型游標(biāo),完全可滾動(dòng)游標(biāo),它先將數(shù)據(jù)庫(kù)備份文件之后進(jìn)行操作,可以斷開數(shù)據(jù)庫(kù)連接后繼續(xù)使用。(6)LockType屬性,指定打開Recordset對(duì)象使用的鎖定類型,其值如下表所示。常

量值說

明AdLockReadOnly1默認(rèn)值,只讀鎖AdLockPessimistic2悲觀鎖,操作者打開之后立即上鎖,直到修改完成或者放棄修改為止,此時(shí)其他人無法編輯AdLockOptimistic3樂觀鎖,當(dāng)記錄將要被更新的時(shí)候才開始上鎖,但是不能保證在提交修改之前是否有人改動(dòng)過AdLockBatchOptimistic4批量樂觀鎖(7)Sort屬性,設(shè)置排序字段。(8)Filter屬性,設(shè)置Recordset對(duì)象中的篩選條件。2.Recordset對(duì)象常用方法(1)AddNew方法,創(chuàng)建和初始化新記錄,其語法為:

Recordset對(duì)象.AddNew

FieldList,Values

AddNew方法為記錄集添加新記錄后,需使用UpDate將所添加的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。(2)Delete方法,刪除當(dāng)前記錄或記錄組。(3)Move方法,移動(dòng)Recordset對(duì)象中當(dāng)前記錄的位置。(4)MoveFirst、MoveLast、MoveNext和MovePrevious方法,移動(dòng)到指定Recordset對(duì)象中的第一條、最后一條、下一條或上一條記錄,使該記錄成為當(dāng)前記錄。(5)Requery方法,重新執(zhí)行對(duì)象所基于的查詢,更新Recordset對(duì)象中的數(shù)據(jù)。(6)Update方法,保存對(duì)Recordset對(duì)象當(dāng)前記錄所做修改。

CancelUpdate方法,可取消對(duì)當(dāng)前記錄修改。字段列表FieldList中字段對(duì)應(yīng)的值2.Recordset對(duì)象常用方法Open方法,打開代表基本表、查詢的結(jié)果或保存的Recordset

中記錄的游標(biāo)。其語法如下:Recordset對(duì)象.OpenSource,ActiveConnection,CursorType,LockType,Options

以下均為可選項(xiàng)

Source為記錄源,可以是SQL語句、表名等;

ActiveConnection指定相應(yīng)的Connection對(duì)象;

CursorType指定打開Recordset對(duì)象使用的指針類型。3.Recordset對(duì)象應(yīng)用示例DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimstrSQLAsString

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0; DATASource="&App.Path&"\users1.accdb"

strSQL="SELECT*FROMusers"

conn.OpenSetrs.ActiveConnection=conn

rs.LockType=adLockOptimistic

rs.CursorType=adOpenStatic

rs.Open

strSQL

rs.AddNewrs.Fields(1)=Text1:rs.Fields(2)=Text2

rs.Update

conn.CloseSetconn=Nothing用數(shù)組存儲(chǔ)RecordsetDoWhileNotrs.EOFFori=0Tors.RecordCount-1Forj=0Tors.Fields.Count-1arr1(i,j)=rs.Fields(j)Nextj

rs.MoveNextNextiLoopFori=0Tors.RecordCount-1Forj=0Tors.Fields.Count-1Printarr1(i,j),NextjPrintNexti顯示結(jié)果GetRows方法Dimarr2,iAsInteger,jAsIntegerDimrs_rcAsInteger,rs_fcAsIntegerarr2=rs.GetRowsrs.CloseSetrs=Nothingconn.CloseSetcn=NothingFori=0Tors_rc-1Forj=0Tors_fc-1PrintLeft(arr2(j,i),6),NextjPrintNextirs_rc=rs.RecordCountrs_fc=rs.Fields.Count三、ADO控件簡(jiǎn)介(一)ADOData控件基本概念(二)ADOData控件常用屬性和方法(三)ADOData控件應(yīng)用(一)ADOData控件的基本概念

ADOData控件使用ADO快速建立數(shù)據(jù)綁定控件和數(shù)據(jù)提供者之間的連接。它使用Recordset對(duì)象支持對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行訪問,并通過數(shù)據(jù)綁定控件顯示和操縱數(shù)據(jù)。數(shù)據(jù)綁定控件,指任何具有“數(shù)據(jù)源”屬性的控件,也稱為數(shù)據(jù)識(shí)別控件。在VisualBasic中,很多控件都可以作為數(shù)據(jù)綁定的控件,如復(fù)選框、組合框、圖像、標(biāo)簽、列表框、圖片框、以及文本框控件等。此外,VisualBasic還提供了很多數(shù)據(jù)綁定的ActiveX控件,如DataGrid、DataCombo、DataList

控件等。大多數(shù)數(shù)據(jù)綁定控件都有DataSource和DataField屬性,前者指定綁定的數(shù)據(jù)源,后者指定綁定的字段。VB工程中使用ADOData控件在默認(rèn)情況下,ADOData控件并不出現(xiàn)在VB工具箱中,將ADOData控件添加到工程中的方法如下:執(zhí)行“工程”菜單中的“部件”命令選擇該選項(xiàng)(不同環(huán)境下ADO的版本號(hào)可能不同)單擊“確定”雙擊(二)ADOData控件的常用屬性1.ConnectionString屬性,指定鏈接字符串,建立到數(shù)據(jù)源的連接信息。2.BOFAction和EOFAction屬性,當(dāng)移動(dòng)數(shù)據(jù)庫(kù)記錄指針時(shí),如果記錄指針移動(dòng)到BOF或EOF位置后,再向前或向后移動(dòng)記錄指針將發(fā)生錯(cuò)誤。BOFAction和EOFAction屬性指定當(dāng)發(fā)生上述錯(cuò)誤時(shí),數(shù)據(jù)控件采取什么樣的操作。BOFAction屬性有兩個(gè)可選值:EOFAction屬性有三個(gè)可選值:值設(shè)

置描

述0adDoMoveFirst默認(rèn)值,移動(dòng)記錄指針到第一條記錄。1adStayBOF移動(dòng)記錄指針到記錄的開始。值設(shè)

置描

述0adDoMoveLast默認(rèn)值,移動(dòng)記錄指針到最后一條記錄。1adStayEOF移動(dòng)記錄指針到記錄的結(jié)尾。2adDoAddNew移動(dòng)記錄指針到添加一條新記錄。(二)ADOData控件的常用屬性3.Mode屬性,指定對(duì)數(shù)據(jù)源的訪問權(quán)限。該屬性有8個(gè)可選值值設(shè)

置描

述0adModeUnknown默認(rèn)值,表明權(quán)限尚未設(shè)定。1adModeRead表明權(quán)限為只讀。2adModeWrite表明權(quán)限為只寫。3adModeReadWrite表明權(quán)限為讀/寫。4adModeShareDenyRead防止其他用戶使用讀權(quán)限打開鏈接。8adModeShareDenyWrite防止其他用戶使用寫權(quán)限打開鏈接。12adModeShareExclusiv防止其他用戶使打開鏈接。16adModeShareDenyNone防止其他用戶使用任何權(quán)限打開鏈接。4.ConnectionTimeout屬性,設(shè)置等待建立一個(gè)連接的時(shí)間,以秒為單位。如果連接超時(shí),則返回一個(gè)錯(cuò)誤。5.MaxRecords屬性,返回Recordset對(duì)象中記錄的數(shù)量。6.RecordSource屬性,設(shè)置一個(gè)數(shù)據(jù)記錄源。可以是表、視圖或SELECT語句等。查詢結(jié)果保存在RecordSet屬性中。2.AddNew方法,在ADOData控件的記錄集中添加一條記錄。語法如下:Adodc1.Recordset.AddNew3.Delete方法,刪除ADOData控件的記錄集中的當(dāng)前記錄。語法如下:Adodc1.Recordset.Delete4.MoveFirst,MoveLast,MoveNext和MovePrevious方法,在ADOData控件的記錄集中移動(dòng)記錄指針。語法如下:Adodc1.Recordset.MoveFirst5.CancelUpdate方法,取消ADOData控件記錄集中的添加或編輯操作,恢復(fù)修改前的狀態(tài)。語法:Adodc1.Recordset.CancelUpdate6.UpdateBatch方法,保存ADOData控件記錄集中的添加或編輯操作。語法如下:Adodc1.Recordset.UpdateBatch(三)ADOData控件的常用方法1.Refresh方法,打開或重新打開數(shù)據(jù)庫(kù)。語法如下:Adodc1.RefreshAdodc1是一個(gè)ADOData控件在添加語句后,應(yīng)給相應(yīng)的字段賦值,然后調(diào)用UpdateBatch方法保存記錄,或調(diào)用CancelUpdate方法取消保存。(四)ADOData控件示例程序【例】應(yīng)用ADOData控件來瀏覽和管理Scenic.accdb數(shù)據(jù)庫(kù)Scenic表中的景區(qū)信息。在窗體中創(chuàng)建ADOData控件Adodc1來讀取Scenic表中的數(shù)據(jù),并通過綁定文本框控件顯示、修改各字段中的數(shù)據(jù),如圖所示。單擊Adodc1控件中的按鈕可瀏覽記錄;單擊“添加”按鈕,在相應(yīng)文本框中輸入景區(qū)信息,然后單擊“更新”按鈕可將輸入的信息添加到Scenic表中;單擊“刪除”按鈕可刪除當(dāng)前記錄;修改文本框中景區(qū)信息后,單擊“更新”按鈕,可更新Scenic表中對(duì)應(yīng)的數(shù)據(jù)。使用ADOData控件連接Scenic.accdb數(shù)據(jù)庫(kù)單擊,打開"數(shù)據(jù)鏈接屬性"對(duì)話框Access2010數(shù)據(jù)庫(kù)文件,選擇該選項(xiàng)通過該選項(xiàng)設(shè)置自動(dòng)產(chǎn)生連接字符串單擊為保證連接有效,單擊該按鈕,測(cè)試鏈接右擊“Adodc1”控件,執(zhí)行“ADODC屬性”命令設(shè)置ADOData控件的記錄源單擊標(biāo)簽控件及其屬性控件名屬性名值Label1Caption景區(qū)編號(hào):Label2Caption景區(qū)名稱:Label3Caption景區(qū)地址:Label4Caption最佳游玩時(shí)間:Label5Caption建議游玩天數(shù):Label6Caption更多信息:文本框控件及其屬性Text1DataSourceAdodc1DataFieldScenicIdText1空Text2DataSourceAdodc1DataFieldScenicNameText1空Text3DataSourceAdodc1DataFieldAddressText1空Text4DataSourceAdodc1DataFieldBestTimeText1空Text5DataSourceAdodc1DataFieldRPDaysText1空Text6DataSourceAdodc1DataFieldDetailsText1空命令按鈕控件及其屬性Command1名稱cmdAddCaption添加Command2名稱cmdDeleteCaption刪除Command3名稱cmdUpdateCaption更新Command4名稱cmdCloseCaption關(guān)閉代碼PrivateSubForm_Load()IfAdodc1.Recordset.EOFAndAdodc1.Recordset.BOFThen

cmdDelete.Enabled=False

cmdUpdate.Enabled=FalseEndIfEndSubPrivateSubcmdAdd_Click()Adodc1.Recordset.AddNew

cmdDelete.Enabled=False

cmdUpdate.Enabled=TrueText1.SetFocusEndSub數(shù)據(jù)庫(kù)中無記錄增加記錄刪除按鈕代碼PrivateSubcmdDelete_Click()IfMsgBox(“刪除當(dāng)前記錄?",vbYesNo,"提示")=vbYesThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveFirstEndIfEndIfEndSub其他代碼PrivateSubcmdUpdate_Click()Adodc1.Recordset.Update

cmdDelete.Enabled=TrueEndSubPrivateSubcmdClose_Click()UnloadMeEndSubPrivateSubAdodc1_MoveComplete(ByValadReasonAs……)Adodc1.Caption="記錄"&Trim(Adodc1.Recordset.AbsolutePosition)EndSubDataGrid控件一、DataGrid控件基本概念二、DataGrid控件常用屬性三、DataGrid控件應(yīng)用主要內(nèi)容一、DataGrid控件基本概念

DataGrid

控件是一種類似于電子數(shù)據(jù)表的綁定控件,可以顯示一系列行和列來表示Recordset

對(duì)象的記錄和字段。VB工程中使用DataGrid控件在默認(rèn)情況下,DataGrid控件并不出現(xiàn)在VB工具箱中,將DataGrid控件添加到工程中的方法如下:執(zhí)行“工程”菜單中的“部件”命令選擇該選項(xiàng)單擊“確定”雙擊二、DataGrid控件的常用屬性1.AllowAddNew屬性,返回或設(shè)置一個(gè)邏輯值。若值為True,用戶可以向與DataGrid

控件連接的Recordset對(duì)象中添加記錄;若值為False,則不能向與DataGrid控件連接的Recordset對(duì)象中添加記錄。2.AllowDelete屬性,返回或設(shè)置一個(gè)邏輯值。若值為True,用戶可以從與DataGrid

控件連接的Recordset對(duì)象中刪除記錄;若值為False,則不能從與DataGrid

控件連接的Recordset對(duì)象中刪除記錄。3.AllowUpdate屬性,返回或設(shè)置一個(gè)邏輯值。若值為True,用戶可以修改DataGrid

控件中的數(shù)據(jù);若值為False,則不能修改DataGrid

控件中的數(shù)據(jù)。二、DataGrid控件的常用屬性4.ColumnHeaders屬性,返回或設(shè)置一個(gè)邏輯值。若值為True,則顯示DataGrid

控件的列標(biāo)頭;若值為False,則不顯示DataGrid

控件的列標(biāo)頭。5.Columns屬性,返回一個(gè)Column對(duì)象的集合??梢允褂肅olumns設(shè)置表格中列的屬性。6.DataSource

屬性,指定一個(gè)DataGrid控件綁定的數(shù)據(jù)源。7.HeadFont

屬性,指定在DataGrid

控件列標(biāo)頭中使用的字體。8.HeadLines

屬性,指定顯示在DataGrid

控件標(biāo)頭的列標(biāo)頭中的文本行數(shù)。三、DataGrid控件示例程序【例】應(yīng)用DBGrid控件瀏覽和編輯Scenic.accdb數(shù)據(jù)庫(kù)Users數(shù)據(jù)表中的用戶信息。分析:在窗體中創(chuàng)建ADOData控件Adodc1,用于讀取Scenic.accdb數(shù)據(jù)庫(kù)Users表中的數(shù)據(jù),通過一個(gè)DataGrid控件顯示、編輯、添加、刪除Users表中的用戶信息,如圖所示。單擊某單元格可編輯其中數(shù)據(jù)(修改或刪除);單擊表左側(cè)的記錄選擇器可選中一條記錄,按下鍵盤上的Delete鍵可刪除該記錄;在“*”所在行中可以輸入一條新記錄;單擊“退出”按鈕退出程序。添加ADOData控件,設(shè)置屬性在窗體中添加ADOData控件,默認(rèn)名稱為Adodc1,按照下表所示設(shè)置其屬性。屬

性設(shè)

值ConnectionStringProvider=Microsoft.ACE.OLEDB.12.0;DataSource=Scenic.accdb;PersistSecurityInfo=FalseRecordSourceSELECT*FROMUsersORDERBYUserNameVisibleFalseDataGrid控件添加將DataGrid控件放置到窗體上。設(shè)置DataGrid網(wǎng)格控件的DataSource屬性為Adodc1,將DataGrid1綁定到ADOData控件Adodc1DataGrid控件編輯右擊DataGrid1控件,執(zhí)行“編輯”命令,進(jìn)入編輯狀態(tài)。再次右擊DataGrid1控件,可通過右鍵菜單中的命令對(duì)其進(jìn)行編輯。執(zhí)行菜單中的“插入”命令可以插入新列;執(zhí)行“刪除”命令可以刪除列。將光標(biāo)移動(dòng)到兩列中間間隔處,當(dāng)指針改變形狀時(shí),可以拖動(dòng)鼠標(biāo)調(diào)整列的寬度。DataGrid控件編輯DataGrid控件允許用戶同時(shí)瀏覽或修改多個(gè)記錄的數(shù)據(jù)。修改功能通過DataGrid屬性設(shè)置實(shí)現(xiàn)。AllowAddNew(增)AllowDelete(刪)AllowUpdate(改)也可以右擊DataGrid1控件,執(zhí)行“屬性”命令打開“屬性頁(yè)”窗口,如圖所示。設(shè)置允許添加、允許刪除和允許更新選項(xiàng)。DataGrid控件編輯單擊“列”選項(xiàng)卡,設(shè)置DataGrid控件中列所對(duì)應(yīng)的數(shù)據(jù)列以及標(biāo)題和數(shù)據(jù)字段,如圖所示。DataList控件和DataCombo控件一、DataList、DataCombo控件基本概念二、DataList、DataCombo控件常用屬性三、DataList、DataCombo控件應(yīng)用主要內(nèi)容一、DataList、DataCombo控件基本概念

DataList控件是數(shù)據(jù)綁定列表框,它需要指定一個(gè)ADO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論