




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第七章 VB數據庫編程v7.1 三種數據庫的訪問方式v作為微軟旗下一款優(yōu)秀的RAD工具,VB在數據庫運用開發(fā)方面的才干非常強大。 v7.1.1 DAO、RDO、ODBC和ADOv在VB的開發(fā)環(huán)境中,可以運用三種數據庫訪問方式,它們分別是:數據訪問對象(DAO)、遠程數據對象RDO和ADO對象模型。vDAO:v數據訪問對象是Microsoft Jet數據庫引擎最早是給Microsoft Access 所運用,如今曾經支持其它數據庫的面向對象的編程接口,像允許開發(fā)者經過ODBC直接銜接到其他數據庫一樣,直接銜接到 Access 表。DAO 最適用于單系統(tǒng)運用程序或在小范圍本地分布運用。 v其內部曾
2、經對Jet數據庫的訪問進展了加速優(yōu)化,而且其運用起來也是很方便的。所以假設數據庫是Access數據庫且是本地運用的話,建議運用這種訪問方式。vVB曾經把DAO模型封裝成了Data控件,分別設置相應的DatabaseName屬性和RecordSource屬性就可以將Data控件與數據庫中的記錄源銜接起來了。以后就可以運用Data控件來對數據庫進展操作。vRDOvRDORemote Data Objects遠程數據對象是一個到ODBC的、面向對象的數據訪問接口,它同易于運用的DAO style組合在一同,提供了一個接口,方式上展現出一切ODBC的底層功能和靈敏性。雖然RDO在很好地訪問Jet或IS
3、AM數據庫方面遭到限制,而且它只能經過現存的ODBC驅動程序來訪問關系數據庫。但是,RDO已被證明是許多SQL Server、Oracle 以及其他大型關系數據庫開發(fā)者經常選用的最正確接口。RDO提供了用來訪問存儲過程和復雜結果集的更多和更復雜的對象、屬性,以及方法。 v和DAO一樣,在VB中也把其封裝為RDO控件了,其運用方法與DAO控件的運用方法完全一樣。vODBCvODBC(Open Database Connectivity,開放數據庫互連)是微軟公司開放效力構造(WOSA,Windows Open Services Architecture)中有關數據庫的一個組成部分,它建立了一組規(guī)
4、范,并提供了一組對數據庫訪問的規(guī)范API運用程序編程接口。這些API利用SQL來完成其大部分義務。ODBC本身也提供了對SQL言語的支持,用戶可以直接將SQL語句送給ODBC。v一個基于ODBC的運用程序對數據庫的操作不依賴任何DBMS,不直接與DBMS打交道,一切的數據庫操作由對應的DBMS的ODBC驅動程序完成。也就是說,不論是FoxPro、Access還是Oracle數據庫,均可用ODBC API進展訪問。由此可見,ODBC的最大優(yōu)點是能以一致的方式處置一切的數據庫。v關于ODBC,有以下幾個概念需求了解: vODBC 驅動程序。是一些DLL,提供了ODBC和數據庫之間的接口。v數據源。
5、數據源包含了數據庫位置和數據庫類型等信息,實踐上是一種數據銜接的籠統(tǒng)。vODBC銜接目前僅僅限于關系型數據庫,對于其他數據源比如EXCEL、文本文件都不能進展訪問,而且有很多DBMS數據庫管理系統(tǒng)都不能充分的支持其一切的功能。相比之下,OLEDB可以存取任何方式的數據,所以其功能是相當的強大,它也指點了目前技術開展的方向。vADOvADOActiveX Data Object是DAO/RDO的后繼產物。ADO 2.0在功能上與RDO更類似,而且普通來說,在這兩種模型之間有一種類似的映射關系。ADO“擴展了DAO和 RDO 所運用的對象模型,這意味著它包含較少的對象、更多的屬性、方法和參數,以及
6、事件。v作為最新的數據庫訪問方式,ADO的運用也是簡單易用,所以微軟曾經明確表示今后把重點放在ADO上,對DAO/RDO不再作晉級,所以ADOv曾經成為了當前數據庫開發(fā)的主流。vADO涉及的數據存儲有DSN(數據源稱號)、ODBC開放式數據銜接以及OLE DB三種方式。后面的例程將詳細講解這三種方式的詳細訪問實現。v要運用ADO,必需清楚ADO的對象層次構造,其大體上分為以下7個對象層次:v1、 Command 對象:包含關于某個命令,例如查詢字符串、參數定義等的信息。Command 對象在功能上和 RDO的rdoQuery 對象類似。v2、 Connection 對象:包含關于某個數據提供程
7、序的信息。Connection 對象在功能上和 RDO 的 rdoConnection 對象是類似的,并且包含了關于構造描畫的信息。它還包含某些 RDOEnvironment 對象的功能,例如transaction 控件。v3、 Error對象:包含數據提供程序出錯時的擴展信息。Error 對象在功能上和 RDO 的rdoError 對象類似。v4、 Field 對象:包含記錄集中數據的某單個列的信息。Field 對象在功能上和 RDO的rdoColumn 對象類似。v5、 Parameter 對象:包含參數化的Command對象的某單個參數的信息。該 Command對象有一個包含其一切Par
8、ameter 對象的 Parameters 集合。Parameter 對象在功能上和 RDO 的 rdoParameter 對象類似。v6、 Property對象:包含某個 ADO 對象的提供程序定義的特征。沒有任何等同于該對象的RDO,但DAO有一個類似的對象。v7、Recordset對象:用來存儲數據操作前往的記錄集。此對象和Connection對象是一切對象最重要的兩個對象。v對于初級用戶來說,只需求掌握其中的Connection對象和RecordSet對象就可以實現根本的數據庫操作,在后面的引見里面我將給出詳細的引見。v下面給出一些開發(fā)閱歷和小技巧,以供參考:v閱歷一:假設數據量不大,
9、而且要求開發(fā)周期短的情況,建閱歷一:假設數據量不大,而且要求開發(fā)周期短的情況,建議運用議運用DAO+Access雖然雖然DAO功能并不強大,但是其對功能并不強大,但是其對Jet引擎進展了加速優(yōu)化處置,所以這種搭配應該是比較好的選引擎進展了加速優(yōu)化處置,所以這種搭配應該是比較好的選擇。擇。閱歷二:閱歷二:RDO當前曾經用的很少了,普通用當前曾經用的很少了,普通用ADO來替代。來替代。 v閱歷三:本閱歷很重要運用閱歷三:本閱歷很重要運用ADO開發(fā)時,銜接數據庫開發(fā)時,銜接數據庫的方式有三種前面曾經表達了,其中的方式有三種前面曾經表達了,其中DSN需求用戶首先需求用戶首先運用要將所要支配的數據庫設置
10、為數據庫源并給其命名。方運用要將所要支配的數據庫設置為數據庫源并給其命名。方法是在控制面板法是在控制面板管理工具管理工具數據源數據源ODBC下面進展下面進展配置。比如設置的數據源稱號為配置。比如設置的數據源稱號為data,那么可以經過下面幾那么可以經過下面幾行代碼來銜接數據庫:行代碼來銜接數據庫: vDim conn As New ADODB.ConnectionDim rs As New ADODB.Recordsetv銜接數據庫銜接數據庫conn.Open dsn=data翻開數據源即選定操作的數據對象翻開數據源即選定操作的數據對象rs.Open SQL語句語句, conn v但是假設是運
11、用ODBC和OLEDB的方式進展銜接,那么大家一定知道在銜接字符串上那一長串的代碼,不要說對于初學者,就是對于那些閱歷豐富的程序員來說,也很難記住這一串代碼。那么如何可以記住這一串代碼呢?其實,方法很簡單,只需添加一個ADO Data控件,然后在其屬性框中運用導游進展設置后,那么最后導游就會自動生成一段ConnectionString,只需求將這一行代碼拷貝下來然后放到conn.open之后的銜接字符串參數的位置上就可以了。這條閱歷希望讀者可以記住,實踐開發(fā)中很適用。 v閱歷四:運用VB在SQL中處置含單引號的字符串時,對字符串數據都用單引號引起來,如:vSelect * from MyTab
12、le Where ID=FirstIDv程序例如:v創(chuàng)建一個DataGrid控件,一個標簽,四個單項選擇框,兩個按鈕。如以下圖所示:v整個程序的功能是用不同的銜接方式來顯示數據庫中的內容,其程序代碼如下:vPrivate Sub Command1_Click()v Dim selitem As Integerv 判別銜接數據庫的方式v If Option1.Value = True Thenvselitem = 1v Elsev If Option2.Value = True Thenv selitem = 2v Elsev If Option3.Value = True Thenv seli
13、tem = 3v Elsev selitem = 4v End Ifv End Ifv End Ifv選取不同的數據庫銜接方式v Select Case selitemv Case 1:v 運用DAO的數據庫銜接方式v Call ShowByDAOvCase 2:v 運用ADO的數據庫銜接方式v Call ShowByADOvCase 3: 運用ODBC的數據庫銜接方式v Call ShowByODBCv Case 4: 運用OLEDB的數據庫銜接方式v Call ShowByOLEDBv End SelectvEnd SubvPrivate Sub Command2_Click()v End
14、vEnd SubvPrivate Sub ShowByDAO()v 運用DAO的數據庫銜接方式v Dim db As Databasev Dim rs As Recordsetv Dim sqlstr$ 存放查詢語句v Set db = OpenDatabase(c:bookbase.mdb)v sqlstr = select * from studentv Set rs = db.OpenRecordset(sqlstr) vCall GridShow(rs) 顯示結果vEnd SubvSub ShowByADO()v Dim conn As New ADODB.Connectionv Di
15、m rs As New ADODB.Recordsetv 運用數據源來銜接數據庫v conn.Open dsn=bookbasev rs.Open select * from student, connv Call GridShowOfADO(rs)vEnd SubvSub ShowByODBC()v Dim conn As New ADODB.Connectionv Dim rs As New ADODB.Recordsetv 運用數據源來銜接數據庫v conn.Open Data Source=bookbasev rs.Open select * from student, connv 顯
16、示結果v Call GridShowOfADO(rs)vEnd SubvSub ShowByOLEDB()v Dim conn As New ADODB.Connectionv Dim rs As New ADODB.Recordsetv 運用數據源來銜接數據庫v conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + App.Path & bookbase.mdbv rs.Open select * from student, connv 顯示結果v Call GridShowOfADO(rs)vEnd SubvSub Gr
17、idShow(rs As Recordset)v 對dao方式進展顯示任務v MSFlexGrid1.TextMatrix(0, 0) = 學號v MSFlexGrid1.TextMatrix(0, 1) = 姓名v MSFlexGrid1.TextMatrix(0, 2) = 性別v MSFlexGrid1.TextMatrix(0, 3) = 成果“v rs.MoveLastv MSFlexGrid1.Rows = rs.RecordCount + 1vMSFlexGrid1.Cols = rs.Fields.CountvDim i%v i = 1v rs.MoveFirstv While
18、 (Not rs1.EOF)v MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)v MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)v MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)v MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)v rs.MoveNextv i = i + 1v WendvEnd SubvSub GridShowOfADO(rs As ADODB.Recordset)v 對ado方式進展顯示任務v MSFlexGrid1
19、.TextMatrix(0, 0) = 學號v MSFlexGrid1.TextMatrix(0, 1) = 姓名“v MSFlexGrid1.TextMatrix(0, 2) = 性別v MSFlexGrid1.TextMatrix(0, 3) = 成果v rs.MoveLastv MSFlexGrid1.Rows = rs.RecordCount + 1v MSFlexGrid1.Cols = rs.Fields.Countv Dim i%v i = 1v rs.MoveFirstvWhile (Not rs.EOF)v MSFlexGrid1.TextMatrix(i, 0) = rs.
20、Fields(0)v MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)v MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)v MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)v rs.MoveNextv i = i + 1v WendvEnd Subv留意:以上程序有些錯誤,需求更正,此義務作為周三上機實驗內容,請同窗們積極參與研討。vWinsock1.SendData “MSG|From A: Form B,換他了|EOFv DoEventsv Winsock1.SendData
21、 Click| & Index & |EOFv picDraw2(Index).Picture = LoadPicture(App.Path & BallGreen.bmp )v picDraw2(Index).Tag = FormAv For I = 0 To 8v picDraw2(I).Enabled = Falsev Nextv Connections = Connections + 1vEnd Subv其中,The doEvents method allows for pending Windows messages to be processed. vPri
22、vate Sub picRefresh()v Dim I As Integerv For I = 0 To 8v picDraw2(I).Tag = v picDraw2(I).Picture = LoadPicture()v picDraw2(I).Enabled = Truev Nextv Connections = 0v Text5.Text = vEnd SubvPrivate Sub Winsock1_DataArrival(ByVal BytesTotal As Long)v Dim strVarv Dim I As Integer, Index As Integerv On Er
23、ror GoTo Errors:v Dim sVar As Stringv Winsock1.GetData sVar, vbStringv strVar = Split(sVar, |)vSelect Case Trim(strVar(0)v Case Clickv Index = CInt(strVar(1)v For I = 0 To 8v picDraw2(I).Enabled = Truev Nextv picDraw2(Index).Picture = LoadPicture(App.Path & BallRed.bmp)v picDraw2(Index).Tag = FormBv Connections = Connections + 1v CheckConnectv Case MSGv Text5.Text = strVar(1) & vbCrLf & Text5.Textv Case ReFreshv picRefreshv End SelectvErrors:vEnd SubvPrivate Sub CheckConnect()v
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國四路數字硬盤錄像機數據監(jiān)測研究報告
- 【假期提升】五升六語文暑假作業(yè)(九)-人教部編版(含答案含解析)
- 2025年消防設施操作員之消防設備中級技能考前沖刺模擬試卷A卷含答案
- 2025年消防設施操作員之消防設備高級技能每日一練試卷A卷含答案
- 廣東省廣州市海珠區(qū)南武集團2022-2023學年八年級下學期期中物理試題(含答案)
- 煙草公司2023招聘考試全真筆試試題(綜合能力測試卷)和答案解析
- 酒店用品銷售代理合同(2篇)
- 采購分包配送合同(2篇)
- 廣告行業(yè)廣告創(chuàng)意版權保護協(xié)議
- 社區(qū)農業(yè)服務提供合同書
- 計算機應用基礎教程(Windows10+Office2016)PPT全套完整教學課件
- 部編人教版二年級道德與法治下冊同步練習(全冊)
- 消化內科實習生入科教育
- 第二章-幼兒園課程的基礎課件
- 后路腰椎椎間融合翻修術
- 食材配送企業(yè)管理制度(完整)
- (帶答案)初中物理第八章運動和力重難點歸納
- 梅毒的診斷與治療資料
- 報價單模板完整版
- GB/T 18658-2018擺錘式沖擊試驗機間接檢驗用夏比V型缺口標準試樣
- 罰款單的模板
評論
0/150
提交評論