国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

幾種用VB訪問Oracle數據庫技術的比較

2024-08-29 13:39:36
字體:
來源:轉載
供稿:網友

  用Visual Basic訪問Oracle數據庫有許多方法可以實現,而每種方法都有其優缺點。你可以選擇最適合你工作環境的方法,首先你必須了解這些方法是什么。在這篇文章里介紹一些訪問Oracle數據庫的常見方法,對每種方法進行簡單的概述,并就每種方法的技術和特點進行比較,希望能給廣大讀者提供一些借鑒。
  一、數據訪問對象(DAO)
  數據訪問對象在很長一段時間內是Visual Basic訪問數據庫功能的主要技術。DAO已經存在了許多年并經歷了多次修改,但它依然是許多數據庫的對象模型。盡管DAO是數據訪問中最弱的一種,但它同時也是最為人所熟知的。盡管DAO模型存在局限,但它依然有許多大量的函數可供Oracle用戶使用,某些方面性能還可以令人接受的。
   幾種用VB訪問Oracle數據庫技術的比較(圖一)
   DAO是一項過時的技術,盡管它仍應用于許多程序,但與新技術相比,它存在一些明顯的缺點:
  ·DAO擁有的對象模型功能比較弱,在所有的數據庫訪問技術中它的功能最弱。
  ·DAO被設計為適用于JET而沒有調整為適用于ODBC數據源。
  ·DAO不適合處理大量不同類型的數據源。
  二、遠程數據對象(RDO)
  RDO是一種圍繞著API產生的“包裝” 性軟件,它封裝了API中的許多功能部件,為開發者提供了ODBC驅動器的所有功能。
   幾種用VB訪問Oracle數據庫技術的比較(圖二)
  RDO是通過ODBC數據源訪問數據的標志性技術,它圍繞著ODBC API進行設計,并不完全適合與Oracle。盡管相對于DAO來說,它有很大的進步,但它的一些功能部件不適用于Oracle用戶,因為Oracle的體系結構與SQL服務器體系存在相當大的差異。RDO的缺點:
  ·微軟認為它過時了,不會再給它投入更多的工作。
  ·不能通過存儲過程檢索PL/SQ游標變量。
  ·RDO依靠于ODBC驅動器,通常會受到它們之間不相容性之間的影響。
  三、ActiveX數據對象(ADO)
  ADO不但可以進行異步查詢、連接和開放式處理,而且還能基于文件和獨立的Recordset、分層結構Recordset等。它提供一種穩定的接口來使用戶利用多種不同的數據源包括從文本文件到ODBC關系型數據庫到復雜的數據庫組。
   幾種用VB訪問Oracle數據庫技術的比較(圖三)
  ADO是當前微軟的頂尖技術。隨著版本的更新,在事件模型部分更加成熟,但從Oracle用戶的角度出發,這個技術仍存在一些缺點:
  ·不能通過存儲過程檢索PL/SQ游標變量。
  ·不能使用Oracle邦定參數。
  ·數據環境還會帶來一些問題,它相對來講,還不夠成熟。
  ·數據環境不支持Oracle打包過程。
  ·處理Oracle中的大對象比較困難
  四、Oracle的OLE對象(OO4O)
  Oracle的OLE對象(OO4O)是一種進程中的OLE服務器,它提供了一種對象層次結構,與DAO非常相似,但卻不采用ODBC標準。它利用Oracle的調用接口來與Oracle會話。其中Oracle的調用接口是一種本地代碼驅動器。令人遺憾的是它不能訪問其他數據庫。
   幾種用VB訪問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數據庫的方法,下面進行一下總結。

  幾種用VB訪問Oracle數據庫技術的比較(圖五)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渭源县| 南靖县| 勐海县| 三门县| 井陉县| 如东县| 会宁县| 乐业县| 宝兴县| 常山县| 什邡市| 千阳县| 大方县| 镇雄县| 古田县| 通州市| 长乐市| 松溪县| 滦平县| 永平县| 海兴县| 民乐县| 饶阳县| 五大连池市| 大余县| 江城| 承德县| 永泰县| 会宁县| 井研县| 青冈县| 麻城市| 镇赉县| 武定县| 富宁县| 霍林郭勒市| 屏东市| 新津县| 鹰潭市| 增城市| 罗平县|