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

下載本文檔

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

文檔簡介

VB程序設(shè)計與數(shù)據(jù)管理樂清中學(xué)李曙強3863365@限定性選修模塊增加算法在數(shù)據(jù)管理中的應(yīng)用必修中的數(shù)據(jù)庫相關(guān)知識枚舉、排序、查找的綜合運用VB訪問數(shù)據(jù)庫,建立數(shù)據(jù)庫連接讀取數(shù)據(jù)庫用數(shù)組存儲部分數(shù)據(jù)查找、排序等算法,對數(shù)據(jù)庫中的數(shù)據(jù)進行簡單統(tǒng)計exampleDimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnAsIntegerDima(200)AsSinglePrivateSubCommand1_Click()conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="&App.Path&"\rizhi.accdb"conn.OpenSetrs.ActiveConnection=connrs.Open"select*fromgnipc"n=0DoWhileNotrs.EOFn=n+1a(n)=rs.Fields(“登錄次數(shù)")rs.MoveNextLooprs.Closeconn.CloseEndSubWindows732位VisualBasic6.0SP6(完全安裝版)Access2010軟硬件環(huán)境Access數(shù)據(jù)庫文件版本轉(zhuǎn)換Access2000,2003*.mdbAccess2010*.accdb在access2010中從mdb轉(zhuǎn)為accdb格式目錄二、ADO數(shù)據(jù)訪問技術(shù)三、ADO對象使用實例一、SQL查詢基礎(chǔ)SQL語言及其功能、特點SQL:StructuredQueryLanguage結(jié)構(gòu)化查詢語言,是對數(shù)據(jù)操作的命令集。特點:由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,所有用SQL編寫的程序都是可以移植的。(Access,SqlServer等數(shù)據(jù)庫)SQL功能:可以面向數(shù)據(jù)庫執(zhí)行查詢、從數(shù)據(jù)庫取回數(shù)據(jù)、可在數(shù)據(jù)庫中插入新的紀錄、可更新數(shù)據(jù)庫中的數(shù)據(jù)、可從數(shù)據(jù)庫刪除記錄、可創(chuàng)建新數(shù)據(jù)庫、可在數(shù)據(jù)庫中創(chuàng)建新表等。其功能可歸結(jié)為查詢、定義、操縱和控制等幾個方面:SQL功能常用語句數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP數(shù)據(jù)操縱INSERT,DELETE,UPDATE數(shù)據(jù)控制GRANT,REVOKESQL和SQLSERVER的區(qū)別SQL(structuredquerylanguage)結(jié)構(gòu)化查詢語言。它是一種標準,不是一種軟件。SQLServer是數(shù)據(jù)庫管理系統(tǒng)的一種它是一種軟件,這種軟件在遵循SQL這種標準,很多數(shù)據(jù)庫管理軟件及開發(fā)工具都支持SQL這種標準。Access中Sql查詢可在Access中利用查詢中的Sql視圖編寫查詢語句,練習(xí)、校對Sql查詢語句SELECT語句的用法SELECT[DISTINCT]目標列表達式1[AS別名][,目標列表達式2][AS別名],…FROM表名1[,表名2]…[WHERE條件表達式][GROUPBY列名1[HAVING組條件表達式]][ORDERBY列名2[ASC|DESC]];功能從數(shù)據(jù)庫中查詢數(shù)據(jù),并以表格形式返回查詢結(jié)果。語法單表查詢1查詢loginCount表全部記錄: SELECT*FROMloginCount查詢loginCount表部分字段:SELECT帳號asqq,登錄時間asqqtimeFROMloginCount單表查詢2where使用查詢loginCount表中登錄時間超過650的記錄SELECT帳號asqq,登錄時間asqqtimeFROMloginCountwhere登錄時間>650查詢loginCount表中qq號碼為333的記錄SELECTloginCount.帳號ASqq,loginCount.登錄時間ASqqtimeFROMloginCountWHERE帳號=‘333’VB中Sql語句書寫注意點Sqlstr=“select*fromt_userwhereu_name=‘張三’”“字符串1”&“字符串2”&“字符串3”不建議用+號連接字符串Username=“張三”Sqlstr=“select*fromt_userwhereu_name=‘”&username&“’”1.書寫最熟悉的sql語句2.找斷點,加雙引號,&&斷開3.加入vb中表達式4.Msgobxdebug.pringt等

輸出sqlstr進行檢查

把下面的語句題換成變量的寫法:

strsql=“Insertintomytable(username)values(‘張紅’)”

第一步:先把張紅抹去,在原位置加兩個引號

strsql=“Insertintomytable(username)values(‘”“’)”

第二步:在中間添加兩個連接符&

strsql=“Insertintomytable(username)values(‘”&&“’)”

第三步:把變量寫在兩個連接符之間

strsql=“Insertintomytable(username)values(‘”&thename&“’)”多表查詢利用where一個數(shù)據(jù)庫中的多個數(shù)據(jù)表之間一般都存在某種內(nèi)在聯(lián)系,它們共同提供有用信息。若一個查詢同時涉及兩個及以上的表,稱之為多表查詢或鏈接查詢。兩張表間有一個相同的字段,才能進行有效的多表查詢。查詢時列名前加表名或表別名前輟(as),如果字段在兩個表中是唯一的可以不加。刪除數(shù)據(jù)--DELETE語句DELETEFROM表名[WHERE條件]功能DELETE語句的功能為刪除表中指定的記錄。語法DELETE語句對滿足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=表達式[,字段2=表達式2,……,字段N=表達式N][WHERE條件]功能UPDATE語句的功能是更新表中指定記錄中指定字段的值。語法UPDATE語句對指定表中滿足WHERE子句中條件的記錄進行修改,具體修改內(nèi)容在SET子句中設(shè)定。表達式的值必須與其對應(yīng)字段的數(shù)據(jù)類型吻合。UPDATE的操作是不可逆的,即做出的修改是無法撤消的。ADO數(shù)據(jù)訪問技術(shù)(一)ADO數(shù)據(jù)模型(二)Connection對象及應(yīng)用(三)Command對象及應(yīng)用(四)Recordset對象及應(yīng)用

一、ADO對象模型

ADO(ActiveXDataObjects)數(shù)據(jù)庫訪問技術(shù),采用OLEDB的數(shù)據(jù)訪問模式。向應(yīng)用程序提供一個統(tǒng)一的數(shù)據(jù)訪問方法,不僅可以訪問Access,SQLServer數(shù)據(jù)庫,還可以訪問Excel,文本文件等基于OLEDB之上的對象模型,半酣可以被OLEDB標準接口描述的數(shù)據(jù)類型。(優(yōu)點:應(yīng)用程序移植)1.ADO對象模型組成三個對象成員:

ConnectionCommandRecordset幾個集合對象:

Errors

Parameters

Fields

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

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

DimconnAsADODB.Connection

Setconn=newADODB.Connectionconn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+App.Path+"\rizhi.accdb“

2行代碼等同于DimconnAsnewADODB.ConnectionAccess不同版本連接語句Access2003:conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\rizhi.mdb"Access2010:

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+App.Path+"\rizhi.accdb”Mode屬性Mode屬性,指定Connection對象修改數(shù)據(jù)的權(quán)限。其值如下:常量 說明adModeUnknown默認值。表明權(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對象的狀態(tài)。其值如下:常量 說明adStateClosed 對象已關(guān)閉adStateOpen

對象已打開adStateConnecting

對象正在連接adStateExecuting

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

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

以下參數(shù)均為可選項ConnectionString

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

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

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

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

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

DataSource="+App.Path+"\rizhi.accdb"

conn.OpenIfconn.State=adStateOpenThenMsgBox"鏈接已打開"conn.CloseIfconn.State=adstatecolsedThenMsgBox"鏈接已關(guān)閉"EndSub創(chuàng)建Connection對象conn鏈接數(shù)據(jù)庫路徑打開到數(shù)據(jù)庫的鏈接判斷鏈接的狀態(tài)關(guān)閉到數(shù)據(jù)庫的鏈接判斷鏈接的狀態(tài)四、Recordset對象Recordset對象表示從數(shù)據(jù)庫返回的一系列記錄的集合。一個Recordset對象由記錄和列(字段)組成。通過Recordset可以對記錄及組成記錄的列進行各種操作。1.Recordset對象的常用屬性(1)ActiveConnection屬性,設(shè)置或返回Recordset對象所屬的Connection對象。(2)AbsolutePosition屬性,指定Recordset對象中當前記錄的序號位置。(3)BOF屬性,若當前的記錄位置在第一條記錄之前,則返回true,否則返回fasle。

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

量值說

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

量值說

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

Recordset對象.AddNewFieldList,ValuesAddNew方法為記錄集添加新記錄后,需使用UpDate將所添加的數(shù)據(jù)存儲到數(shù)據(jù)庫中。(2)Delete方法,刪除當前記錄或記錄組。(3)Move方法,移動Recordset對象中當前記錄的位置。(4)MoveFirst、MoveLast、MoveNext和MovePrevious方法,移動到指定Recordset對象中的第一條、最后一條、下一條或上一條記錄,使該記錄成為當前記錄。(5)Requery方法,重新執(zhí)行對象所基于的查詢,更新Recordset對象中的數(shù)據(jù)。(6)Update方法,保存對Recordset對象當前記錄所做修改。CancelUpdate方法,可取消對當前記錄修改。字段列表FieldList中字段對應(yīng)的值2.Recordset對象常用方法Open方法,打開代表基本表、查詢的結(jié)果或保存的Recordset中記錄的游標。其語法如下:Recordset對象.OpenSource,ActiveConnection,CursorType,LockType,Options

以下均為可選項

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

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

CursorType指定打開Recordset對象使用的指針類型。3.Recordset對象應(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=AdOpenKeysetrs.OpenstrSQL增加記錄rs.AddNewrs.Fields(1)=Text1rs.Fields(2)=Text2rs.Updateconn.CloseSetconn

Nothing數(shù)據(jù)有效性檢查前一條、后一條按鈕代碼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前一條后一條ADO中command對象ADODB對象模型Command對象提交給數(shù)據(jù)源的命令,傳遞SQL命令Parameter對象用來向SQL語句傳遞參數(shù)Property對象指明一個ADO對象的屬性Command對象簡介使用Command對象查詢數(shù)據(jù)庫并返回Recordset對象中的記錄,以便執(zhí)行大量操作或處理數(shù)據(jù)庫結(jié)構(gòu)

Command對象用于執(zhí)行數(shù)據(jù)庫操作命令,使用Command對象的ActiveConection屬性同樣可以創(chuàng)建一個連接。例如"Activeconection"屬性被設(shè)置為一個Connection對象的引用,那么Command對象就建立一個新的連接,并使用這個新連接。用Command對象執(zhí)行一個查詢子串,可以返回一個記錄集,也可以返回多個記錄集,甚至可以不返回記錄集。Command對象與RecordSet對象區(qū)別Command對象:主要是向SQL語句、StoredProcude傳遞參數(shù),依靠SQL的強大功能來完成數(shù)據(jù)庫的操作;Command的性能更優(yōu)越一些,特別是在大量記錄添加情況下。RecordSet對象:封裝了數(shù)據(jù)對象、并提供了一系列的方法和屬性來簡化數(shù)據(jù)庫的編程。復(fù)雜數(shù)據(jù)處理,memo備注字段,

time()PKCommand對象3個重要屬性Connection屬性設(shè)置Command所使用的Connection例:Setcmd.ActiveConnection=connCommandText屬性設(shè)置對數(shù)據(jù)源執(zhí)行SQL語句或存儲過程。例:cmd.CommandText="deletefromyonghu

WHERE帳號='xxxxxx'“AdCmdText時,表示包含命令文本,AdCmdTable時,表示包含一個表的名字,AdCmdStoredProc時,表示包含存儲過程名。CommandType屬性設(shè)置指定的CommandText類型例:cmd.CommandType=adCmdText查詢字串是一個SQL語句:"adCmdText";查詢字串是一個存儲過程,"adCmdStoreProc";查詢字串是一個表名,"adCmdTable";Command對象操作實例DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimcmdAsNewADODB.Commandconn

溫馨提示

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

評論

0/150

提交評論