Vb與數(shù)據(jù)庫編程_第1頁
Vb與數(shù)據(jù)庫編程_第2頁
Vb與數(shù)據(jù)庫編程_第3頁
Vb與數(shù)據(jù)庫編程_第4頁
Vb與數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第八章 VB與數(shù)據(jù)庫連接數(shù)據(jù)庫訪問技術(shù)將數(shù)據(jù)庫外部與其通信的過程抽象化,通過提供訪問接口,簡化了客戶端訪問數(shù)據(jù)庫的過程。 一、數(shù)據(jù)庫訪問技術(shù)目前Windows系統(tǒng)上常見的數(shù)據(jù)庫接口包括:ODBC(開放數(shù)據(jù)庫互連)DAO(數(shù)據(jù)訪問對象)RDO(遠(yuǎn)程數(shù)據(jù)對象)OLE DB(對象鏈接嵌入數(shù)據(jù)庫)ADO(ActiveX數(shù)據(jù)對象) 重點掌握ODBC是微軟公司開放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個組成部分,建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成大部分任務(wù)。1、ODBC 一個基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,

2、所有的數(shù)據(jù)庫操作由對應(yīng)的DBMS的ODBC驅(qū)動程序完成。均可用ODBC API進(jìn)行訪問。最大的優(yōu)點是以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。應(yīng)用程序ODBC API(接口)驅(qū)動程序管理器驅(qū)動程序驅(qū)動程序驅(qū)動程序數(shù)據(jù)源數(shù)據(jù)源數(shù)據(jù)源數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)源包括用戶要訪問的數(shù)據(jù)和與它有關(guān)的操作系統(tǒng)、DBMS和訪問DBMS使用的網(wǎng)絡(luò)平臺。應(yīng)用程序要訪問一個數(shù)據(jù)庫,必須選擇【控制面板】|【管理工具】中的“數(shù)據(jù)源(ODBC)”管理器注冊一個數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅(qū)動程序等信息,建立起ODBC與具體數(shù)據(jù)庫的聯(lián)系。只要應(yīng)用程序把數(shù)據(jù)源名(data source name ,DSN

3、)提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫的連接。3、DAO DAO(Data Access Object)是一組MicrosoftAccess/Jet 數(shù)據(jù)庫引擎的COM自動化接口。DAO直接與Access/Jet數(shù)據(jù)庫通信,通過Jet數(shù)據(jù)庫引擎,DAO也可以同其它數(shù)據(jù)庫進(jìn)行通信, 使用DAO對Access數(shù)據(jù)庫訪問非常方便。RDO是Remote Data Object的縮寫,最初是作為ODBC API的抽象,為Visual Basic程序員提供的編程對象,因此RDO與Visual Basic密切相關(guān)。由于RDO直接使用ODBC API對遠(yuǎn)程數(shù)據(jù)源進(jìn)行操作,而不像DAO要經(jīng)過Jet引擎

4、,所以,RDO可以為使用關(guān)系數(shù)據(jù)庫服務(wù)器的應(yīng)用程序提供很好的性能。 4、RDO5、OLE DBOLE DB對ODBC進(jìn)行了兩個方面的擴展:一是提供了一個數(shù)據(jù)庫編程的OLE接口,即COM;二是提供了一個可用于關(guān)系型和非關(guān)系型數(shù)據(jù)源的接口。 與ODBC API一樣,OLE DB 也屬于低層的數(shù)據(jù)庫編程接口, 利用OLE DB進(jìn)行軟件開發(fā)應(yīng)該包括兩類軟件:OLE DB客戶程序(Consumer): 是使用OLE DB接口的應(yīng)用程序.OLE DB供應(yīng)程序(Provider):實現(xiàn)OLE DB接口并實際與數(shù)據(jù)庫服務(wù)器通信的DLL.6、ADO(Activex Data Object)ADO是目前在Wind

5、ows環(huán)境中比較流行的數(shù)據(jù)庫編程技術(shù)。它是建立在OLE DB底層技術(shù)之上的高級編程接口。對OLE DB進(jìn)行了封裝。 先使用數(shù)據(jù)庫管理系統(tǒng)(例如:SQL Server)建立好數(shù)據(jù)庫和數(shù)據(jù)表結(jié)構(gòu),然后在程序中通過使用ADODC數(shù)據(jù)庫控件或引用ADO對象與數(shù)據(jù)庫中的表建立連接,再通過數(shù)據(jù)控件(例如:DataGrid等)來進(jìn)行數(shù)據(jù)庫的各種操作。ADO技術(shù)有兩種方法:ADO對象ADO控件二、ADO技術(shù)詳解ADO對象模型定義了一個可編程的分層對象集合, 主要由三個對象成員Connection、Command和Recordset對象,以及幾個集合對象Errors、Parameters和Fields等所組成。

6、Connection對象Errors集合Error對象Command對象Parameters集合Parameter對象Recordset對象Fields集合Field對象 表 ADO對象描述 對象名 描 述Connection 指定連接數(shù)據(jù)來源Command 發(fā)出命令信息從數(shù)據(jù)源獲取所需數(shù)據(jù)Recordset 由一組記錄組成的記錄集Error 訪問數(shù)據(jù)源時所返回的錯誤信息Parameter 與命令對象有關(guān)的參數(shù)Field 記錄集中某個字段的信息Connection對象:使用ADO進(jìn)行數(shù)據(jù)連接,如連接ODBC、SQL Server、Access等。 1)幾個常用的屬性: ConnectionSt

7、ring, CousorLocation ConnectionString=“Provider=SQLOLEDB.1; 指定OLE DB提供者Integrated Security=SSPI; 驗證方式Persist Security Info=False; 是否保存安全信息Initial Catalog=library;Data Source=OWENABC()CousorLocation=aduserclient 以便調(diào)用支持批更新的“客戶端游標(biāo)提供者”User ID=sa;password=123;Open 方法 (ADO Connection)功能:打開到數(shù)據(jù)源的連接。語法connec

8、tion.Open ConnectionString, UserID, Password, OpenOptions以下參數(shù)均為可選項ConnectionString:包含連接信息的字符串。UserID:包含建立連接時所使用的用戶名稱。Password:字符串,包含建立連接時所用密碼。OpenOptions:ConnectOptionEnum 值。如果設(shè)置為 adConnectAsync,則異步打開連接。如果設(shè)置為ConnectComplete當(dāng)連接可用時將調(diào)用該事件。2)常用方法 Execute方法執(zhí)行指定的查詢、SQL語句、存儲過程或特定提供者的文本等內(nèi)容,返回一個RecordSet對象語法

9、如下: 1)對于沒有返回結(jié)果的命令格式:connection.Execute CommandText, RecordsAffected, Options2)對于有返回結(jié)果的命令格式:Set recordSet = connection.Execute (CommandText, RecordsAffected, Options)CommandText是字符串類型,包含要執(zhí)行的SQL語句、表名、存儲過程或特定提供者的文本;RecordsAffected是長整型變量類型,其值是執(zhí)行指定的操作所影響的記錄數(shù)目;Options參數(shù)表示對數(shù)據(jù)庫請求的類型。 Close方法關(guān)閉Connection對象以便

10、釋放所有關(guān)聯(lián)的系統(tǒng)資源。Connection.closeSet cn=nothing數(shù)據(jù)的獲取、結(jié)果的檢驗以及數(shù)據(jù)庫的更新??梢砸勒詹樵儣l件獲取或顯示所要的數(shù)據(jù)列與記錄。Recordset對象會保留每項查詢返回的記錄所在的位置,以便逐項察看結(jié)果。記錄集對象Recordset:1Open方法打開代表基本表、查詢結(jié)果或者以前保存的RecordSet中記錄的游標(biāo)(指向數(shù)據(jù)庫數(shù)據(jù)的位置,即指針),也就是說可以與數(shù)據(jù)庫建立連接。recordSet.Open Source, ActiveConnection, CursorType, LockType, OptionsA、 Source :指定數(shù)據(jù)表的名稱

11、B、 ActiveConnection :指定一個已經(jīng)聲明的Connection對象C、 CursorType :設(shè)置打開Recordset所返回的據(jù)記錄指針類型,參數(shù)值0-3,見表D、LockType屬性,見下表E、OptionsadOpenUnspecifed 光標(biāo)類型不確定adOpenForwardOnly前滾靜態(tài)光標(biāo)。這種光標(biāo)只能向前瀏覽記錄集,比如用MoveNext向前滾動,這種方式可以提高瀏覽速度。 adOpenKeyset 鍵集游標(biāo)采用這種光標(biāo)的記錄集看不到其他用戶的新增、刪除操作adOpenDynamic動態(tài)游標(biāo)所有數(shù)據(jù)庫的操作都會立即在客戶記錄集上反應(yīng)出來。adOpenSta

12、tic靜態(tài)光標(biāo)產(chǎn)生一個靜態(tài)的記錄集,但其它用戶的新增、刪除、更新操作是不可見的。Recordset對象的CursorType屬性Recordset對象的LockType屬性(1)adLockReadOnly:只讀,默認(rèn)(2)adLockPessimistic:鎖定被編輯的記錄,直到執(zhí)行 Update方法或移動記錄時為止。(3)adLockOptimistic:執(zhí)行Update方法或移動記錄時鎖定記錄,直到操作完成為止。(4)adLockBatchOptimistic:可以同時更新多個記錄-1:指示Source參數(shù)中的命令類型為未知1:指示被執(zhí)行的字符串包含一個命令文本2:指示被執(zhí)行的字符串包含

13、一個表的名字3:指示被執(zhí)行的字符串包含一個存儲過程名Options屬性2、Recordset.MoveFirst:將數(shù)據(jù)記錄指針移至第一條3、Recordset.MoveLast:將數(shù)據(jù)記錄指針移至最后一條4、Recordset.MoveNext:將數(shù)據(jù)記錄指針往后移一條5、Recordset.MovePrevious:將數(shù)據(jù)記錄指針向前移一條6、Recordset.update:刷新記錄集7Close方法用來關(guān)閉所指定的RecordSet對象。RecordSet.Close 1)Recordset.RecordCount:返回Recordset中數(shù)據(jù)記錄的數(shù)目3、屬性或函數(shù)3)Records

14、et(“字段名稱”):返回指定字段名稱的數(shù)據(jù)內(nèi)容。如rs(“name”) rs(index)2)Recordset(i).Name:返回Recordset中第i個字段的名稱,i由0開始,因此i的最大數(shù)是Recordset.RecordCount-15)Recordset.EOF:判斷指針是否已超過Recordset的末端,如果是則返回true4)Recordset.BOF:判斷指針是否已超過Recordset的頂端,如果是則返回true6)Field數(shù)據(jù)字段集合,可以采用以下方式:Rs.fields(“name”) rs.fields(index)Command對象定義將對數(shù)據(jù)源執(zhí)行的指定命令

15、。 1)CommandText屬性定義命令的可執(zhí)行文本。 2)使用Execute方法執(zhí)行命令并在適當(dāng)?shù)臅r候 返回Recordset對象。 3)通過設(shè)置ActiveConnection屬性使打開的連 接與Command對象關(guān)聯(lián)。 4)設(shè)置Name屬性將Command標(biāo)識為與Connection 對象關(guān)聯(lián)的方法。三.用ADO操縱數(shù)據(jù)庫使用ADO操作數(shù)據(jù)庫的主要步驟和方法:打開數(shù)據(jù)庫。 首先需要創(chuàng)建數(shù)據(jù)庫連接對象(connection),然后調(diào)用該對象的Open方法即可打開數(shù)據(jù)庫。操作數(shù)據(jù)庫數(shù)據(jù)。 在數(shù)據(jù)庫打開之后,通過Connection、Command對象執(zhí)行SQL命令,或者創(chuàng)建記錄集(Reco

16、rdset)對象,使用該對象的各種方法就可以進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的查詢、定位以及增加、刪除和修改。關(guān)閉數(shù)據(jù)庫。使用上面創(chuàng)建的數(shù)據(jù)庫連接對象的close方法就可以進(jìn)行數(shù)據(jù)庫的關(guān)閉。ADO對象與數(shù)據(jù)源的連接:首先需要引用數(shù)據(jù)對象,然后才能進(jìn)行數(shù)據(jù)連接。(1)引用數(shù)據(jù)對象 工程-引用-Microsoft ActiveX Data Objects 2.5 Library聲明一個 Adodb.recordset的變量,作記錄集用 Dim rs as Adodb.recordset聲明一個類型為Connection的變量,供連接數(shù)據(jù)源使用。 Dim Cn as Connection(2)在程序中設(shè)置連接 (3)

17、具體連接 Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Set Cn = New ADODB.Connection Set Rs = New ADODB.Recordset Set 語句將對象引用賦給變量或?qū)傩?。等價于:Dim cnn As New ADODB.Connection可選的。斷絕 objectvar 與任何指定對象的關(guān)聯(lián)。Nothing 必需的。由對象名,所聲明的相同對象類型的其它變量,或者返回相同對象類型的函數(shù)或方法所組成的表達(dá)式。 objectexpression 可選的。通常在聲明時使用 New,以便可以隱式創(chuàng)建對

18、象。如果 New 與 Set 一起使用,則將創(chuàng)建該類的一個新實例。new必需的。變量或?qū)傩缘拿Q。 objectvar 連接數(shù)據(jù)源,不需要用戶名和密碼Cn.ConnectionString= Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False; Initial Catalog=book;Data Source=.“數(shù)據(jù)庫連接需要用戶名與密碼的情況:cn.ConnectionString = Provider=SQLOLEDB.1;Persist Security Info=FALSE;User ID=

19、sa;password=123;Initial Catalog=library;Data Source=OWENABCRs.ActiveConnection = cn建立數(shù)據(jù)源Rs.Source =SQL語句Rs.Open , , adOpenDynamic, adLockOptimistic查詢:Cn.CursorLocation = adUseClientCn.Open 建立數(shù)據(jù)源的物理連接,用close方法關(guān)閉例 類模塊module1.bas(4)數(shù)據(jù)錄入的AddNew方法分3步 使用Rs.AddNew語句向數(shù)據(jù)源中添加記錄 通過賦值語句將數(shù)據(jù)傳送給相應(yīng)字段,如 Rs!姓名=text1.

20、text 使用Rs.Update語句更新記錄集。(5)數(shù)據(jù)更新方法 Update方法將當(dāng)前錄入的數(shù)據(jù)從緩沖區(qū)存入數(shù)據(jù)庫。四、ADODC數(shù)據(jù)控件不是VB的基本控件,需在工程-部件中引用Microsoft ADO Data Control 6.0(sp6 OLEDB)1、ADODC控件常用屬性(1) ConnectionString屬性與數(shù)據(jù)庫建立連接。該屬性包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息。Adodc1.connectionString =“Provider=SQLOLEDB.1; 指定OLE DB提供者Integrated Security =SSPI; 驗證方式Persist Secur

21、ity Info =False; 是否保存安全信息Initial Catalog =library; 指定數(shù)據(jù)庫Data Source =OWENABC()“ 數(shù)據(jù)庫服務(wù)器(2)CommandType確定記錄源命令類型有4種adCmdUnkownadCmdTextadCmdTableadCmdStoredProcAdodc1.CommandType=adCmdTable (3) Recordsource屬性該屬性確定可訪問的數(shù)據(jù),這些數(shù)據(jù)構(gòu)成記錄集對象Recordset。該屬性值可以是數(shù)據(jù)庫中單個表名、一個存儲查詢或者是使用SQL查詢語言的查詢字符串。Adodc1.RecordSource=S

22、QL語句等(4)RecordCount屬性:獲得數(shù)據(jù)庫的記錄總數(shù) Adodc1.recordset.recordcount1(5)absolutePosition屬性:記錄指針當(dāng)前位置,有3個預(yù)設(shè)值: adPosUnkown:-1,當(dāng)前記錄指針無法確定 adPosBOF: -2,當(dāng)前記錄指針位于第一條記錄之前 adPosEOF:-3,當(dāng)前記錄指針位于最后一條記錄之后2、Adodc控件的常用操作方法addNew增加:adodc1.recordset.addnewUpdate修改:adodc1.recordset.UpdateDelete刪除: Adodc1.Recordset.DeleteRef

23、resh刷新:Adodc1.Refresh記錄定位的方法: (1)向前移動一條記錄 adodc1.Recordset.MovePrevious (2)向后移動一條記錄 adodc1.Recordset.MoveNext (3)移動到尾記錄 adodc1.Recordset.MoveLast (4)記錄指針的相對移動 adodc1.Recordset.Move(+/-)n(5)數(shù)據(jù)刪除Delete方法 在刪除記錄后需要進(jìn)行記錄更新。獲取某個字段: Adodc1.Recordset.Fields(i) 五、數(shù)據(jù)綁定控件通過VB 6.0進(jìn)行數(shù)據(jù)庫開發(fā)時,需要同時和其它的控件結(jié)合使用,這就需要對控件進(jìn)行綁定處理。這些能夠與數(shù)據(jù)控件創(chuàng)建關(guān)聯(lián),配合數(shù)據(jù)控件實現(xiàn)記錄內(nèi)容顯示的控件稱為數(shù)據(jù)感知控件。常用數(shù)據(jù)感知控件有l(wèi)abel、text、listbox等。它們有以下兩個屬性:DataSource屬性:

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論