幾種用VB訪問Oracle資料庫技術的比較

來源:互聯網
上載者:User
用Visual Basic訪問Oracle資料庫有許多方法可以實現,而每種方法都有其優缺點。你可以選擇最適合你工作環境的方法,首先你必須瞭解這些方法是什麼。在這篇文章裡介紹一些訪問Oracle資料庫的常見方法,對每種方法進行簡單的概述,並就每種方法的技術和特點進行比較,希望能給廣大讀者提供一些借鑒。
一、Data Access Objects(DAO)
Data Access Objects在很長一段時間內是Visual Basic訪問資料庫功能的主要技術。DAO已經存在了許多年並經曆了多次修改,但它依然是許多資料庫的物件模型。儘管DAO是資料訪問中最弱的一種,但它同時也是最為人所熟知的。儘管DAO模型存在局限,但它依然有許多大量的函數可供Oracle使用者使用,某些方面效能還可以令人接受的。


DAO是一項過時的技術,儘管它仍應用於許多程式,但與新技術相比,它存在一些明顯的缺點:
·DAO擁有的物件模型功能比較弱,在所有的資料庫訪問技術中它的功能最弱。
·DAO被設計為適用於JET而沒有調整為適用於ODBC資料來源。
·DAO不適合處理大量不同類型的資料來源。
二、遠端資料物件(RDO)
RDO是一種圍繞著API產生的“封裝” 性軟體,它封裝了API中的許多功能組件,為開發人員提供了ODBC磁碟機的所有功能。


RDO是通過ODBC資料來源訪問資料的標誌性技術,它圍繞著ODBC API進行設計,並不完全適合與Oracle。儘管相對於DAO來說,它有很大的進步,但它的一些功能組件不適用於Oracle使用者,因為Oracle的體繫結構與SQL伺服器體系存在相當大的差異。RDO的缺點:
·微軟認為它過時了,不會再給它投入更多的工作。
·不能通過預存程序檢索PL/SQ遊標變數。
·RDO依賴於ODBC磁碟機,通常會受到它們之間不相容性之間的影響。
三、ActiveX資料對象(ADO)
ADO不但可以進行非同步查詢、串連和開放式處理,而且還能基於檔案和獨立的Recordset、分層結構Recordset等。它提供一種穩定的介面來使使用者利用多種不同的資料來源包括從文字檔到ODBC關係型資料庫到複雜的資料庫組。


ADO是當前微軟的頂尖技術。隨著版本的更新,在事件模型部分更加成熟,但從Oracle使用者的角度出發,這個技術仍存在一些缺點:
·不能通過預存程序檢索PL/SQ遊標變數。
·不能使用Oracle邦定參數。
·資料環境還會帶來一些問題,它相對來講,還不夠成熟。
·資料環境不支援Oracle打包過程。
·處理Oracle中的大對象比較困難
四、Oracle的OLE對象(OO4O)
Oracle的OLE對象(OO4O)是一種進程中的OLE伺服器,它提供了一種對象階層,與DAO非常相似,但卻不採用ODBC標準。它利用Oracle的調用介面來與Oracle會話。其中Oracle的調用介面是一種本地代碼磁碟機。令人遺憾的是它不能訪問其他資料庫。


OO4O擁有優異的功能性,訪問Oracle資料庫,其他任何資料庫訪問方式很難達到它的功能性。但OO4O仍有不足:
·在某些執行個體中,它的速度不是最快的。部分原因是因為它是一種進程中的服務程式。
·OO4O不支援非同步作業或事件。
·OO4O不支援GetRows方式。OO4O主要被設計用於可更新動態集。
在OO4O中,串連是比較容易實現的,你只需簡單的鍵入你的使用者名稱、口令和資料庫別名即可。物件模型與DAO的相似,比較明顯的不同是所有的對象前面都冠有“Ora”字樣。下面這些代碼建立了Ora會話對象和相應的Ora資料庫物件,然後又建立了Ora動態集來儲存所檢索的結果集。最後,關閉了Ora動態集和Ora資料庫物件。
程式清單
private sub FetchOO4O()
Dim OraSession As Object
Dim OraDatabase As Object
Set OraSession(i) = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase(i) = OraSession(i).DbOpenDatabase("exampledb", "scott/tiger", 0&)
 
'Connect to the daabase
Set OraSession = CreatObject("OracleInProcSever.XoraSession")
Set OaDataBase = OraSession.OpenDatebase("beq-local",_
"video_user/ummagumma",ORADB_DEFAULT)
 
'Run then query
strSQL="SELECT * FROM video_store.movies ORDER BY movie_id"
Set rsMovies = OraDateBase.CreatDynaset(strSQL,ORADYN_READONLY)
 
'Display the fields
while not rsMovies.EOF
FOR ifields = 0 to rsMovies.fields.Count-1
Debug. rsMovies.(iFields)
Next 'iField
rsMovies.MoveNext
Wend
 
Set rsMovies = Nothing
Set OraSession= Nothing
 
End Sub
五、各種方法的比較
上面已經列舉了4種訪問Oracle資料庫的方法,下面進行一下總結。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.