版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VB程序設(shè)計(jì)與數(shù)據(jù)管理浙江省定海第一中學(xué)夏祎華Windows732位VisualBasic6.0SP6Access2010軟硬件環(huán)境目錄二、ADO數(shù)據(jù)訪問技術(shù)三、ADO對(duì)象使用實(shí)例四、ADO控件簡介一、SQL查詢基礎(chǔ)SQL語言及其功能、特點(diǎn)SQL:StructuredQueryLanguage結(jié)構(gòu)化查詢語言,是對(duì)數(shù)據(jù)操作的命令集。SQL功能:可以面向數(shù)據(jù)庫執(zhí)行查詢、從數(shù)據(jù)庫取回?cái)?shù)據(jù)、可在數(shù)據(jù)庫中插入新的紀(jì)錄、可更新數(shù)據(jù)庫中的數(shù)據(jù)、可從數(shù)據(jù)庫刪除記錄、可創(chuàng)建新數(shù)據(jù)庫、可在數(shù)據(jù)庫中創(chuàng)建新表等。其功能可歸結(jié)為查詢、定義、操縱和控制等幾個(gè)方面:SQL功能常用語句數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操縱INSERT,DELETE,UPDATE數(shù)據(jù)控制GRANT,REVOKESELECT語句的用法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ù)庫中查詢數(shù)據(jù),并以表格形式返回查詢結(jié)果。語法多表查詢一個(gè)數(shù)據(jù)庫中的多個(gè)數(shù)據(jù)表之間一般都存在某種內(nèi)在聯(lián)系,它們共同提供有用信息。若一個(gè)查詢同時(shí)涉及兩個(gè)及以上的表,稱之為多表查詢或鏈接查詢。兩張表間有一個(gè)相同的字段,才能進(jìn)行有效的多表查詢。查詢時(shí)列名前加表名或表別名前輟,如果字段在兩個(gè)表中是唯一的可以不加。內(nèi)連接查詢出的是兩個(gè)表滿足條件的公共列共有記錄。應(yīng)用【例】在景區(qū)表、等級(jí)表中,查詢北京各景區(qū)的名稱、等級(jí)和評(píng)定年度。SELECTScenic.ScenicName,Grade.Grade,Grade.EvalYearFROMScenicINNERJOINGradeONScenic.ScenicId=Grade.ScenicIdWHEREGrade.Area="北京";分析刪除數(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)?。數(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的操作是不可逆的,即做出的修改是無法撤消的。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ù)庫訪問技術(shù),采用OLEDB的數(shù)據(jù)訪問模式。1.ADO對(duì)象模型組成三個(gè)對(duì)象成員:
ConnectionCommandRecordset幾個(gè)集合對(duì)象:
Errors
Parameters
Fields
Properties指定連接數(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庫,引入ADO庫定義文件;(2)用Connection對(duì)象連接數(shù)據(jù)庫;(3)利用建立好的連接,通過Connection、Command對(duì)象執(zhí)行SQL命令,或利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢、處理;(4)使用完畢后關(guān)閉連接釋放對(duì)象。3.引入ADO庫定義文件在VisualBasic程序中使用ADO對(duì)象,必須先為當(dāng)前工程引用ADO的對(duì)象庫。方法:執(zhí)行“工程”菜單中“引用”命令,彈出“引用”對(duì)話框,如圖所示。單擊“確定”選擇該選項(xiàng)(不同環(huán)境下ADO的版本號(hào)可能不同)二、Connection對(duì)象Connection用來創(chuàng)建到數(shù)據(jù)庫建立連接。1.常用屬性ConnectionString屬性,指定用于建立連接數(shù)據(jù)源的信息。
【例】創(chuàng)建到數(shù)據(jù)庫Scenic.accdb的鏈接。
DimconnAsADODB.Connection
Setconn=newADODB.Connectionconn.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ù)庫Scenic.accdb。PrivateSubForm_Load()DimconnAsNewADODB.Connectionconn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;
DataSource="+App.Path+"\Scenic.accdb"
conn.OpenIfconn.State=adStateOpenThenMsgBox"鏈接已打開"conn.CloseIfconn.State=adstatecolsedThenMsgBox"鏈接已關(guān)閉"EndSub創(chuàng)建Connection對(duì)象conn鏈接數(shù)據(jù)庫路徑打開到數(shù)據(jù)庫的鏈接判斷鏈接的狀態(tài)關(guān)閉到數(shù)據(jù)庫的鏈接判斷鏈接的狀態(tài)三、Command對(duì)象Command對(duì)象,定義將對(duì)數(shù)據(jù)源執(zhí)行的命令。命令對(duì)象在操縱數(shù)據(jù)庫前需要與一個(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.CommandDimstrSQLAsStringconn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0; DATASource="&App.Path&"\users1.accdb"strSQL="INSERTINTOusers(username,userpsd)VALUES('" &Text1&"','"&Text2&"')"cmd.CommandText=strSQLconn.OpenSetcmd.ActiveConnection=conncmd.Execute
:conn.Close:Setconn=NothingEndSub四、Recordset對(duì)象Recordset對(duì)象表示從數(shù)據(jù)庫返回的一系列記錄的集合。一個(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ù)庫的備份,不能即時(shí)體現(xiàn)數(shù)據(jù)庫記錄狀態(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ù)庫備份文件之后進(jìn)行操作,可以斷開數(shù)據(jù)庫連接后繼續(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ì)象.AddNewFieldList,ValuesAddNew方法為記錄集添加新記錄后,需使用UpDate將所添加的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。(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.RecordsetDimstrSQLAsStringconn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0; DATASource="&App.Path&"\users1.accdb"strSQL="SELECT*FROMusers"conn.OpenSetrs.ActiveConnection=connrs.LockType=adLockOptimisticrs.CursorType=adOpenStaticrs.OpenstrSQLrs.AddNewrs.Fields(1)=Text1rs.Fields(2)=Text2rs.Updateconn.CloseSetconn
Nothing數(shù)據(jù)有效性檢查DimconnAsNewADODB.ConnectionDimcmdAsNewADODB.CommandDimrsAsNewADODB.RecordsetDimstrSQLAsStringconn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;
DATASource="&App.Path&"\users1.accdb"strSQL="SELECT*FROMusersWHEREusername='"&Text1&"'"cmd.CommandText=strSQLconn.OpenSetcmd.ActiveConnection=connSetrs=cmd.ExecuteIfText1=""ThenMsgBox"請(qǐng)輸入用戶名!":Text1.SetFocus:ExitSubEndIfIfrs.EOFThenIfTrim(Text2.Text)=Trim(Text3.Text)ThenstrSQL="INSERTINTOusers(username,userpsd)VALUES('" &Text1&"','"&MD5(Text2,32)&"')"cmd.CommandText=strSQL:cmd.ExecuteMsgBox"賬號(hào)注冊(cè)成功!",vbOKOnly,"注冊(cè)成功"ElseMsgBox"二次密碼不一致!",vbOKOnly,"請(qǐng)重輸入密碼"Text2.SetFocusEndIfElseMsgBox"請(qǐng)重新輸入用戶名注冊(cè)!",vbOKOnly,"請(qǐng)重新注冊(cè)"Text1.SetFocusEndIf單表查詢實(shí)例單表查詢部分代碼strSQL="SELECT*FROMScenic"Setrs.ActiveConnection=connrs.CursorType=adOpenStatic'設(shè)置游標(biāo)類型rs.LockType=adLockOptimistic'設(shè)置鎖定類型rs.OpenstrSQLText1=rs.Fields(0)Text2=rs.Fields(1)Text3=rs.Fields(2)Text4=rs.Fields(3)Text5=rs.Fields(4)Text6=rs.Fields(5)Command1.Enabled=FalseCommand2.Enabled=False前一條、后一條按鈕代碼PrivateSubCommand2_Click()rs.MovePreviousCommand3.Enabled=TrueIfrs.AbsolutePosition=1ThenCommand1.Enabled=FalseCommand2.Enabled=FalseEndIfText1=rs.Fields(0)……Text6=rs.Fields(5)EndSubPrivateSubCommand3_Click()rs.MoveNextCommand1.Enabled=TrueCommand2.Enabled=TrueIfrs.EOFThenCommand3.Enabled=Falsers.MoveLastExitSubEndIfText1=rs.Fields(0)……Text6=rs.Fields(5)EndSub前一條后一條多表查詢實(shí)例Scenic表Grade表conn.OpensqlSetrs=NewADODB.RecordsetstrSQL="SELECT*FROMScenicINNERJOINGradeON
Scenic.ScenicId=Grade.ScenicId"Setrs.ActiveConnection=connrs.OpenstrSQL,conn,adOpenStatic,adLockOptimisticText1=rs.Fields(0)……Text7=rs.Fields(7)Text8=rs.Fields(8)……多表查詢部分代碼strSQL="SELECT*FROMScenic,GradeWHERE
Scenic.ScenicId=Grade.ScenicId"用數(shù)組存儲(chǔ)RecordsetDoWhileNotrs.EOFFori=0Tors.RecordCount-1Forj=0Tors.Fields.Count-1arr1(i,j)=rs.Fields(j)Nextjrs.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二維數(shù)組排序Fori=0Tors_rc-2Forj=iTors_rc-1Ifarr1(i,4)>arr1(j,4)ThenFork=0Tors_fc-1
temp=arr1(i,k)arr1(i,k)=arr1(j,k)arr1(j,k)=temp
Nextk
EndIfNextjNexti排序結(jié)果ADOData控件一、ADOData控件基本概念二、ADOData控件常用屬性和方法三、ADOData控件應(yīng)用主要內(nèi)容一、ADOData控件的基本概念
ADOData控件使用ADO快速建立數(shù)據(jù)綁定控件和數(shù)據(jù)提供者之間的連接。它使用Recordset對(duì)象支持對(duì)存儲(chǔ)在數(shù)據(jù)庫中的數(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ù)庫記錄指針時(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ù)記錄源??梢允潜怼⒁晥D或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ù)庫。語法如下:Adodc1.RefreshAdodc1是一個(gè)ADOData控件在添加語句后,應(yīng)給相應(yīng)的字段賦值,然后調(diào)用UpdateBatch方法保存記錄,或調(diào)用CancelUpdate方法取消保存。四、ADOData控件示例程序【例】應(yīng)用ADOData控件來瀏覽和管理Scenic.accdb數(shù)據(jù)庫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ù)庫單擊,打開"數(shù)據(jù)鏈接屬性"對(duì)話框Access2010數(shù)據(jù)庫文件,選擇該選項(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.AddNewcmdDelete.Enabled=FalsecmdUpdate.Enabled=TrueText1.SetFocusEndSub數(shù)據(jù)庫中無記錄增加記錄刪除按鈕代碼PrivateSubcmdDelete_Click()
IfMsgBox(“刪除當(dāng)前記錄?",vbYesNo,"提示")=vbYesThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThen
Adodc1.Recordset.MoveFirst
EndIf
EndIfEndSub其他代碼PrivateSubcmdUpdate_Click()Adodc1.Recordset.UpdatecmdDelete.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ù)庫Users數(shù)據(jù)表中的用戶信息。分析:在窗體中創(chuàng)建ADOData控件Adodc1,用于讀取Scenic.accdb數(shù)據(jù)庫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í)行“屬性”命令打開“屬性頁”窗口,如圖所示。設(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è)ADOData數(shù)據(jù)源,并使用數(shù)據(jù)源中的一個(gè)字段進(jìn)行填充。DataCombo控件是數(shù)據(jù)綁定組合框,其功能與DataList控件相同。。VB工程中使用DataList、DataCombo控件執(zhí)行“工程”菜單中的“部件”命令選擇該選項(xiàng)單擊“確定”雙擊二、DataList、DataCombo控件常用屬性1.BoundColumn屬性,返回或設(shè)置綁定數(shù)據(jù)源中的一個(gè)源字段名稱。此字段的值會(huì)隨著DataList控件或DataCombo控件中當(dāng)前值的變化而變化。用于為另一控件提供數(shù)據(jù)值。2.BoundText屬性,返回或設(shè)置由BoundColumn屬性指定的字段的值,可以看成是DataList控件或DataCombo控件當(dāng)前值變化的輸出值。3.DataField屬性,返回或設(shè)置綁定的字段名。4.DataSource屬性,返回或設(shè)置綁定數(shù)據(jù)源,通常為ADOData控件。5.ListField屬性,返回或設(shè)置Recordset對(duì)象中的字段名,這個(gè)對(duì)象由RowSource屬性指定,用于填充DataList控件或DataCombo控件的列表部分。6.RowSource屬性,返回或設(shè)置列表項(xiàng)數(shù)據(jù)源。7.SelectedItem屬性,返回一個(gè)值,包含DataList或DataCombo控件中選中記錄的值。三、DataList、DataCombo控件應(yīng)用【例】應(yīng)用DataList、DataCombo控件查詢Scenic.accdb數(shù)據(jù)庫中各地域的景區(qū)信息。控件DataList1和DataCombo1分別與Adodc1、Adodc2控件綁定,以顯示Grade、Scenic數(shù)據(jù)表中Area、ScenicName字段的信息。當(dāng)用戶在DataCombo控件中選擇某地域名稱時(shí),該地域中景點(diǎn)的名稱將顯示在DataList控件中。添加ADOData控件,設(shè)置屬性在窗體中添加ADOData控件Adodc1、
Adodc2
,按照下表所示設(shè)置其屬性。屬
性設(shè)置值ConnectionStringProvider=Microsoft.ACE.OLEDB.12.0;DataSource=Scenic.accdb;PersistSecurityInfo=FalseRecordSourceSELECTDISTINCTareaFROMGradeORDERBYAreaVisibleFalse屬
性設(shè)置值ConnectionStringProvider=Microsoft.ACE.OLEDB.12.0;DataSource=Scenic.accdb;PersistSecurityInfo=FalseRecordSourceSELECT*FROMScenic,GradeWHEREScenic.ScenicId=Grade.ScenicIdVisibleFalseDataList、DataCombo控件應(yīng)用在窗體中添加DataList1、DataCombo1控件,并設(shè)置屬性。屬
性設(shè)置值RowSourceAdodc1ListFieldAreaBoundColumnArea屬性設(shè)置值RowSourceAdodc2ListFieldScenicNameBoundColumnScenicId主要代碼PrivateSubDataCombo1_Click(AreaAsInteger)
Adodc2.RecordSource="SELECTScenic.ScenicName,
Scenic.ScenicIdFROMScenic,GradeWHERE
Scenic.ScenicId=Grade.ScenicIdand
Grade.Area='"&DataCombo1.Text&"'"
Adodc2.Refresh
DataList1.ListField="ScenicName"
DataList1.BoundColumn="ScenicId"EndSub作業(yè)預(yù)備(3張數(shù)據(jù)表)庫結(jié)構(gòu):表1表2表3idNameOrgtelidUserspasswordidAddrPost作業(yè)上交要求1.內(nèi)容:源程序、可執(zhí)行程序、庫文件以上文件打包成一個(gè)RAR文件,2.文件名要求:可執(zhí)行程序的命名:
單位名+姓名+作品名.exe壓縮包的命名:
單位名+姓名+作品名.rar3.發(fā)送至郵箱:63888977@問題數(shù)據(jù)庫連接的概念A(yù)DO的概念Connection的作用Command的作用Recordset的作用SQL語言的作用附錄:SQL基本語句(一)SQL簡介(二)Access中SQL查詢語句的執(zhí)行環(huán)境(三)SELECT語句的基礎(chǔ)用法一、SQL查詢基礎(chǔ)一、SQL語言及其功能、特點(diǎn)SQL:StructuredQueryLanguage結(jié)構(gòu)化查詢語言,是專門對(duì)數(shù)據(jù)操作的命令集。SQL功能:可以面向數(shù)據(jù)庫執(zhí)行查詢、從數(shù)據(jù)庫取回?cái)?shù)據(jù)、可在數(shù)據(jù)庫中插入新的紀(jì)錄、可更新數(shù)據(jù)庫中的數(shù)據(jù)、可從數(shù)據(jù)庫刪除記錄、可創(chuàng)建新數(shù)據(jù)庫、可在數(shù)據(jù)庫中創(chuàng)建新表等。其功能可歸結(jié)為查詢、定義、操縱和控制四個(gè)方面:SQL功能常用語句數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操縱INSERT,DELETE,UPDATE數(shù)據(jù)控制GRANT,REVOKE二、Access中SQL查詢語句的執(zhí)行環(huán)境5.單擊“運(yùn)行”按鈕,執(zhí)行SQL語句4.輸入SQL語句2.單擊“關(guān)閉”按鈕1.打開一個(gè)Access數(shù)據(jù)庫文件,單擊“查詢?cè)O(shè)計(jì)”按鈕3.單擊“SQL視圖”三、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ù)庫中查詢數(shù)據(jù),并以表格形式返回查詢結(jié)果。語法SELECT查詢過程查詢杭州到南京的空調(diào)特快數(shù)據(jù)庫服務(wù)器發(fā)送指令返回結(jié)果查詢將產(chǎn)生一個(gè)虛擬表,稱為“記錄集”,其中數(shù)據(jù)是從數(shù)據(jù)庫現(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長春天津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…如WHERERegDateBETWEEN2012/1/1AND2014/1/1;(3)確定集合IN于查找字段值屬于指定集合的記錄,與之相對(duì)的是NOTIN,用于查找字段值不屬于指定集合的記錄。如WHERERPDaysIN(1,3);反思總結(jié)基礎(chǔ)查詢查詢滿足條件的記錄,可以通過WHERE子句設(shè)計(jì)查詢條件。(4)字符匹配LIKE用來進(jìn)行字符串的匹配,與之相對(duì)的是NOTLIKE。進(jìn)行匹配時(shí)可以使用通配符*和?,*代表任意長度的字符串,?代表任意單個(gè)字符。如WHEREScenicIdLIKE'?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='浙江'”條件的組。通常HA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省信陽市羅山縣2024-2025學(xué)年七年級(jí)上學(xué)期期中生物學(xué)試題(解析版)
- 2024年生態(tài)園林建設(shè)施工合同2篇
- 2024年度國際貿(mào)易代理委托借款反擔(dān)保服務(wù)合同3篇
- 2025電視節(jié)目制作播出合同
- 2025林木委托管護(hù)合同
- 2024年某科技公司關(guān)于研發(fā)人工智能技術(shù)的合作協(xié)議
- 2025承攬合同(簡3)承攬合同
- 2024年拖拉機(jī)買賣簡易協(xié)議范例版B版
- 2024年人民醫(yī)院新院區(qū)醫(yī)療廢物處置中心建設(shè)施工合同2篇
- 珠寶首飾庫存優(yōu)化方案
- 華南理工大學(xué)《自然語言處理》2023-2024學(xué)年期末試卷
- 新能源行業(yè)光伏發(fā)電與儲(chǔ)能技術(shù)方案
- 中國高血壓防治指南(2024年修訂版)要點(diǎn)解讀
- 24秋國開《西方行政學(xué)說》形考任務(wù)1答案(第2套)
- 2024巡察整改方案和整改措施
- 醫(yī)院冬季防雪防凍工作應(yīng)急預(yù)案
- 2024年公共管理學(xué)考試題庫及答案
- 借用資質(zhì)簽合同模板
- 退休員工返聘審批表
- Unit 7 Careers Writing Workshop 申請(qǐng)信講解 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高中英語北師大版2019 選擇性必修第三冊(cè)
- 風(fēng)電場(chǎng)全過程咨詢項(xiàng)目管理規(guī)劃方案
評(píng)論
0/150
提交評(píng)論