免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VB6.0數(shù)據(jù)庫訪問技術(shù)與例程解析
作為微軟旗下一款優(yōu)秀的RAD工具,VB在數(shù)據(jù)庫應(yīng)用開發(fā)方面的能力十分強(qiáng)大。微軟設(shè)計(jì)了多種數(shù)據(jù)庫訪問方法,下面通過對(duì)VB訪問數(shù)據(jù)庫的多種技術(shù)進(jìn)行深入剖析,并總結(jié)出實(shí)際開發(fā)中的幾點(diǎn)經(jīng)驗(yàn)。希望能夠?qū)δ荲B的初學(xué)者有所幫助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的環(huán)境下進(jìn)行的)

  一. DAO、RDO、ODBC和ADO

  在VB的開發(fā)環(huán)境中,可以使用三種數(shù)據(jù)庫訪問方式,它們分別是:數(shù)據(jù)訪問對(duì)象(DAO)、遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO)和ADO對(duì)象模型。

  DAO:

  數(shù)據(jù)訪問對(duì)象是用來顯露了Microsoft Jet數(shù)據(jù)庫引擎(最早是給Microsoft Access 所使用,現(xiàn)在已經(jīng)支持其它數(shù)據(jù)庫),并允許開發(fā)者通過ODBC直接連接到其他數(shù)據(jù)庫一樣,直接連接到 Access 表。DAO 最適用于單系統(tǒng)應(yīng)用程序或在小范圍本地分布使用。其內(nèi)部已經(jīng)對(duì)Jet數(shù)據(jù)庫的訪問進(jìn)行了加速優(yōu)化,而且其使用起來也是很方便的。所以如果數(shù)據(jù)庫是Access數(shù)據(jù)庫且是本地使用的話,建議使用這種訪問方式。

  VB已經(jīng)把DAO模型封裝成了Data控件,分別設(shè)置相應(yīng)的DatabaseName屬性和RecordSource屬性就可以將Data控件與數(shù)據(jù)庫中的記錄源連接起來了。以后就可以使用Data控件來對(duì)數(shù)據(jù)庫進(jìn)行操作。

  RDO

  RDO(Remote Data Objects)遠(yuǎn)程數(shù)據(jù)對(duì)象是一個(gè)到ODBC的、面向?qū)ο蟮臄?shù)據(jù)訪問接口,它同易于使用的DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問Jet或ISAM數(shù)據(jù)庫方面受到限制,而且它只能通過現(xiàn)存的ODBC驅(qū)動(dòng)程序來訪問關(guān)系數(shù)據(jù)庫。但是,RDO已被證明是許多SQL Server、Oracle 以及其他大型關(guān)系數(shù)據(jù)庫開發(fā)者經(jīng)常選用的最佳接口。RDO提供了用來訪問存儲(chǔ)過程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性,以及方法。

  和DAO一樣,在VB中也把其封裝為RDO控件了,其使用方法與DAO控件的使用方法完全一樣。

  ODBC

  ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語言的支持,用戶可以直接將SQL語句送給ODBC

  一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)程序完成。也就是說,不論是FoxPro、Access還是Oracle數(shù)據(jù)庫,均可用ODBC API進(jìn)行訪問。由此可見,ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。

  一個(gè)完整的ODBC由下列幾個(gè)部件組成:
   
  1. 應(yīng)用程序(Application)

  ODBC管理器(Administrator)。該程序位于Windows 95控制面板(Control Panel)的32位ODBC內(nèi),其主要任務(wù)是管理安裝的ODBC驅(qū)動(dòng)程序和管理數(shù)據(jù)源。

  驅(qū)動(dòng)程序管理器(Driver Manager)。驅(qū)動(dòng)程序管理器包含在ODBC32.DLL中,對(duì)用戶是透明的。其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC中最重要的部件。

  2. ODBC API

  ODBC 驅(qū)動(dòng)程序。是一些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口。

  數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,實(shí)際上是一種數(shù)據(jù)連接的抽象。

  ODBC連接目前僅僅限于關(guān)系型數(shù)據(jù)庫,對(duì)于其他數(shù)據(jù)源比如EXCEL、文本文件都不能進(jìn)行訪問,而且有很多DBMS(數(shù)據(jù)庫管理系統(tǒng))都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的數(shù)據(jù),所以其功能是相當(dāng)?shù)膹?qiáng)大,它也指導(dǎo)了目前技術(shù)發(fā)展的方向。

  ADO

  ADO(ActiveX Data Object)是DAO/RDO的后繼產(chǎn)物。ADO 2.0在功能上與RDO更相似,而且一般來說,在這兩種模型之間有一種相似的映射關(guān)系。ADO"擴(kuò)展"了DAO和 RDO 所使用的對(duì)象模型,這意味著它包含較少的對(duì)象、更多的屬性、方法(和參數(shù)),以及事件。

  作為最新的數(shù)據(jù)庫訪問模式,ADO的使用也是簡單易用,所以微軟已經(jīng)明確表示今后把重點(diǎn)放在ADO上,對(duì)DAO/RDO不再作升級(jí),所以ADO已經(jīng)成為了當(dāng)前數(shù)據(jù)庫開發(fā)的主流。

  ADO涉及的數(shù)據(jù)存儲(chǔ)有DSN(數(shù)據(jù)源名稱)、ODBC(開放式數(shù)據(jù)連接)以及OLE DB三種方式。后面的例程將詳細(xì)講解這三種方式的具體訪問實(shí)現(xiàn)。

  要使用ADO,必須清楚ADO的對(duì)象層次結(jié)構(gòu),其大體上分為以下7個(gè)對(duì)象層次:

  1、 Command 對(duì)象:包含關(guān)于某個(gè)命令,例如查詢字符串、參數(shù)定義等的信息。Command 對(duì)象在功能上和 RDO的rdoQuery 對(duì)象相似。

  2、 Connection 對(duì)象:包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息。Connection 對(duì)象在功能上和 RDO 的 rdoConnection 對(duì)象是相似的,并且包含了關(guān)于結(jié)構(gòu)描述的信息。它還包含某些 RDOEnvironment 對(duì)象的功能,例如transaction 控件。

  3、 Error對(duì)象:包含數(shù)據(jù)提供程序出錯(cuò)時(shí)的擴(kuò)展信息。Error 對(duì)象在功能上和 RDO 的rdoError 對(duì)象相似。

  4、 Field 對(duì)象:包含記錄集中數(shù)據(jù)的某單個(gè)列的信息。Field 對(duì)象在功能上和 RDO的rdoColumn 對(duì)象相似。

  5、 Parameter 對(duì)象:包含參數(shù)化的Command對(duì)象的某單個(gè)參數(shù)的信息。該 Command對(duì)象有一個(gè)包含其所有Parameter 對(duì)象的 Parameters 集合。Parameter 對(duì)象在功能上和 RDO 的 rdoParameter 對(duì)象相似。

  6、 Property對(duì)象:包含某個(gè) ADO 對(duì)象的提供程序定義的特征。沒有任何等同于該對(duì)象的RDO,但DAO有一個(gè)相似的對(duì)象。

  7、Recordset對(duì)象:用來存儲(chǔ)數(shù)據(jù)操作返回的記錄集。此對(duì)象和Connection對(duì)象是所有對(duì)象最重要的兩個(gè)對(duì)象。

  當(dāng)然,對(duì)于初級(jí)用戶來說,我們只需要掌握其中的Connection對(duì)象和RecordSet對(duì)象就可以實(shí)現(xiàn)基本的數(shù)據(jù)庫操作,在后面的經(jīng)驗(yàn)介紹里面我將給出詳細(xì)的介紹。

二. 開發(fā)經(jīng)驗(yàn)小結(jié):


  前面總體上介紹了一下當(dāng)前在VB平臺(tái)下的數(shù)據(jù)庫訪問技術(shù),這些技術(shù)也是當(dāng)前數(shù)據(jù)庫技術(shù)的主流。下面筆者結(jié)合近幾年的開發(fā)經(jīng)驗(yàn),給出一些開發(fā)經(jīng)驗(yàn)和小技巧,以供參考:

  經(jīng)驗(yàn)一:如果數(shù)據(jù)量不大,而且要求開發(fā)周期短的情況,建議使用DAO+Access雖然DAO功能并不強(qiáng)大,但是其對(duì)Jet引擎進(jìn)行了加速優(yōu)化處理,所以這種搭配應(yīng)該是比較好的選擇。

  經(jīng)驗(yàn)二:RDO當(dāng)前已經(jīng)用的很少了,一般用ADO來替代。

  經(jīng)驗(yàn)三:(本經(jīng)驗(yàn)很重要)使用ADO開發(fā)時(shí),連接數(shù)據(jù)庫的方式有三種(前面已經(jīng)敘述了),其中DSN需要用戶首先使用要將所要操縱的數(shù)據(jù)庫設(shè)置為數(shù)據(jù)庫源并給其命名。方法是在控制面板->管理工具->數(shù)據(jù)源(ODBC)下面進(jìn)行配置。比如設(shè)置的數(shù)據(jù)源名稱為data,那么可以通過下面幾行代碼來連接數(shù)據(jù)庫:


Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'連接數(shù)據(jù)庫
conn.Open "dsn=data"
'打開數(shù)據(jù)源(即選定操作的數(shù)據(jù)對(duì)象)
rs.Open SQL語句, conn

  但是如果是使用ODBC和OLEDB的方式進(jìn)行連接,那么大家一定知道在連接字符串上那一長串的代碼,不要說對(duì)于初學(xué)者,就是對(duì)于那些經(jīng)驗(yàn)豐富的程序員來說,也很難記住這一串代碼。那么如何可以記住這一串代碼呢?其實(shí),方法很簡單,只要添加一個(gè)ADO Data控件,然后在其屬性框中使用向?qū)нM(jìn)行設(shè)置后,那么最后向?qū)Ь蜁?huì)自動(dòng)生成一段ConnectionString,只需要將這一行代碼拷貝下來然后放到conn.open之后的連接字符串參數(shù)的位置上就可以了。這條經(jīng)驗(yàn)希望讀者能夠記住,實(shí)際開發(fā)中很實(shí)用。

  經(jīng)驗(yàn)四:前面講到手動(dòng)設(shè)置ODBC數(shù)據(jù)源,這里也可以通過程序來進(jìn)行動(dòng)態(tài)設(shè)置。首先要清楚的是ODBC的詳細(xì)信息全部存放在注冊(cè)表的下述鍵值內(nèi):"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC",通過調(diào)用Win32函數(shù)WriteProfileString來對(duì)相應(yīng)的鍵值進(jìn)行修改即可達(dá)到目的。

  經(jīng)驗(yàn)五:通常將數(shù)據(jù)庫的連接代碼和資源釋放代碼放入各自特定的函數(shù)里面,因?yàn)橐话愦笠稽c(diǎn)的程序里需要經(jīng)常對(duì)這兩個(gè)功能模塊進(jìn)行調(diào)用,這樣做就可以提高效率,當(dāng)然很多時(shí)候都需要寫成連接池的形式。

  經(jīng)驗(yàn)六:使用VB在SQL中處理含單引號(hào)的字符串時(shí),對(duì)字符串?dāng)?shù)據(jù)都用單引號(hào)引起來,如:


Select * from MyTable Where ID='FirstID'

  若其中的FirstID為First'ID,即中間多出一個(gè)單引號(hào),則上述寫法將導(dǎo)致錯(cuò)誤,解決的辦法是將字符串中的每一個(gè)單引號(hào)用兩雙引號(hào)替換,下面的函數(shù)StrToSQL完成該功能,并用單引號(hào)將處理后的字符串引起來:


 Private Function StrToSQL(ByVal strvalue As String) As String
    StrToSQL = "'" + Replace(strvalue, "'", "''") + "'"
 End Function


  在寫SQL時(shí)如有字符串?dāng)?shù)據(jù),不管其中有沒有單引號(hào),都可以這樣使用:


   strvalue="First'Id"
   strSQL="Select * from MyTable Where ID="+StrToSQL(strvalue)
三. 實(shí)例解析

  下面介紹一個(gè)實(shí)例,來消化以上的相關(guān)知識(shí)。這里我在一個(gè)程序界面下實(shí)現(xiàn)了DAO,ADO,ODBC,OLEDB四種數(shù)據(jù)庫訪問方式。

  程序代碼分析:


'整個(gè)程序功能是選擇不同的連接方式來進(jìn)行顯示工作,三種方式顯示效果完全相同
'下面是主程序過程
Private Sub Command1_Click()
 Dim selitem As Integer
 '判斷連接數(shù)據(jù)庫的方式
 If Option1.value = True Then
  selitem = 1
 Else
  If Option2.value = True Then
   selitem = 2
  Else
   selitem = 3
  End If
 End If

 '選取不同的數(shù)據(jù)庫連接方式
 Select Case selitem
 Case 1:
  '使用DAO的數(shù)據(jù)庫連接方式
  Call ShowByDAO
 Case 2:
  '使用ADO的數(shù)據(jù)庫連接方式
  Call ShowByADO
 Case 3:
  '使用ODBC的數(shù)據(jù)庫連接方式
  Call ShowByODBC
 Case 4:
  '使用OLEDB的數(shù)據(jù)庫連接方式
  Call ShowByOLEDB
 End Select
End Sub

Private Sub ShowByDAO()
 '使用DAO的數(shù)據(jù)庫連接方式
 Dim db As Database
 Dim rs As Recordset
 Dim sqlstr$ '存放查詢語句
 Set db = OpenDatabase(App.Path & "db1.mdb")
 sqlstr = "select * from 成績表"
 Set rs = db.OpenRecordset(sqlstr)
 '顯示結(jié)果
 Call GridShow(rs)
End Sub

Sub ShowByADO()
 Dim conn As New ADODB.Connection
 Dim rs As New ADODB.Recordset
 '使用數(shù)據(jù)源來連接數(shù)據(jù)庫
 conn.Open "dsn=data"
 rs.CursorType = adOpenKeyset
 rs.LockType = adLockOptimistic
 rs.Open "select * from 成績表", conn
 Call GridShowOfADO(rs)
End Sub

Sub ShowByODBC()
 Dim conn As New ADODB.Connection
 Dim rs As New ADODB.Recordset
 '使用數(shù)據(jù)源來連接數(shù)據(jù)庫
 conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=data"
 rs.Open "select * from 成績表", conn
 '顯示結(jié)果
 Call GridShowOfADO(rs)
End Sub

Sub ShowByOLEDB()
 Dim conn As New ADODB.Connection
 Dim rs As New ADODB.Recordset
 '使用數(shù)據(jù)源來連接數(shù)據(jù)庫
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\db1.mdb" + ";Persist Security Info=False"
 rs.Open "select * from 成績表", conn

 '顯示結(jié)果
 Call GridShowOfADO(rs)
End Sub

Sub GridShow(rs As Recordset)
 '對(duì)dao方式進(jìn)行顯示工作
 MSFlexGrid1.TextMatrix(0, 0) = "姓名"
 MSFlexGrid1.TextMatrix(0, 1) = "性別"
 MSFlexGrid1.TextMatrix(0, 2) = "語文"
 MSFlexGrid1.TextMatrix(0, 3) = "數(shù)學(xué)"
 MSFlexGrid1.TextMatrix(0, 4) = "英語"
 rs.MoveLast
 MSFlexGrid1.Rows = rs.RecordCount + 1
 MSFlexGrid1.Cols = rs.Fields.Count
 Dim i%
 i = 1
 rs.MoveFirst
 While (Not rs.EOF)

  MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
  MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
  MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
  MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
  MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
  rs.MoveNext
  i = i + 1
  'If (rs.EOF = True) Then
  ' Exit For
 Wend
End Sub

Sub GridShowOfADO(rs As ADODB.Recordset)
 '對(duì)ado方式進(jìn)行顯示工作
 MSFlexGrid1.TextMatrix(0, 0) = "姓名"
 MSFlexGrid1.TextMatrix(0, 1) = "性別"
 MSFlexGrid1.TextMatrix(0, 2) = "語文"
 MSFlexGrid1.TextMatrix(0, 3) = "數(shù)學(xué)"
 MSFlexGrid1.TextMatrix(0, 4) = "英語"
 '注意recordcount屬性必須在當(dāng)前記錄指針在最后一條記錄時(shí)才會(huì)返回正確的值
 rs.MoveLast
 MSFlexGrid1.Rows = rs.RecordCount + 1
 MSFlexGrid1.Cols = rs.Fields.Count
 Dim i%
 i = 1
 rs.MoveFirst
 While (Not rs.EOF)
  MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
  MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
  MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
  MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
  MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
  rs.MoveNext
  i = i + 1
 Wend
End Sub

Private Sub Command2_Click()
End
End Sub


  上述代碼已經(jīng)在Windows 2000 professional和Visual Basic 6.0的環(huán)境下調(diào)試成功。

  四.小結(jié)

  本文通過對(duì)數(shù)據(jù)庫訪問相關(guān)技術(shù)的分析與總結(jié),提出若干有價(jià)值的經(jīng)驗(yàn)。借鑒這些經(jīng)驗(yàn),會(huì)給開發(fā)帶來一定的便利。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
為什么會(huì)有ODBC、ADO和RDO?
中國計(jì)算機(jī)報(bào)
[轉(zhuǎn)]ADO、DAO、RDO、ODBC、OLEDB、JDBC、BDE數(shù)據(jù)庫訪問技術(shù)的區(qū)別 - 《MATLAB和數(shù)據(jù)庫混合編程案例分析》 MATLAB技術(shù)論壇
Python實(shí)現(xiàn)數(shù)據(jù)庫編程方法詳解
數(shù)據(jù)庫訪問技術(shù) odbc dao rdo uda jet oledb
連接數(shù)據(jù)庫方法---DAO,RDO,OLE,ADO
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服