<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在ASP中使用Oracle Object for OLE訪問Oracle 8

      [摘要]ASP(Active Server Pages)是微軟公司為開發互聯網絡應用程序所提出的工具之一,它是一種類似HTML(Hypertext Markup Language超文本標記語言)、Script與CGI(Common Gateway Interface通用網關接口)的結合體,但是其運行效率卻...

      ASP(Active Server Pages)是微軟公司為開發互聯網絡應用程序所提出的工具之一,它是一種類似HTML(Hypertext
      Markup Language超文本標記語言)、Script與CGI(Common Gateway Interface通用網關接口)的結合體,但是其運行效率卻
      比CGI更高、程序編制也比HTML更方便且更有靈活性,程序安全性及保密性遠比Script好。因此ASP是目前網頁開發技術中
      最容易學習、靈活性最大的開發工具。
      ASP內置的ADO組件是微軟公司開發的互聯網絡數據庫存取解決方案,也是ASP存取數據庫的重要功臣,ADO通過ODBC訪問數
      據庫,從理論上講ADO能訪問各種ODBC所支持的數據庫,如Microsoft SQL Server,Access,Foxpro,Oracle,Dbase等,
      然而在實踐中我們發現ADO可以完全支持Microsoft SQL Server和Acess,然而對于Oracle就有些困難了,筆者在實踐中利
      用ADO訪問Oracle8,結果發現ADO不能訪問Oracle8的數字型字段,并且發現ADO訪問Oracle8的速度極慢。
      為了解決利用ASP訪問Oracle8的速度及其他技術問題,筆者嘗試了利用Oracle Object for OLE訪問Oracle8,結果完全取
      得了筆者預期的結果。
      Oracle Object for OLE是Oracle公司為了客戶端存取數據庫所發展的一個重要的產品,它以Windows95/98/NT為基礎,共
      所有與OLE兼容的應用程序訪問Oracle數據庫。它是沒有用戶界面的OLE Server,其所包含的Oracle Objects Server是ASP
      訪問Oracle數據庫的重要功臣之一。
      要通過Oracle Objects Server來訪問Oracle8數據庫,除了基本的Web服務器與ASP等軟件外,還必須確定Web服務器已經安
      裝了Oracle Object for OLE軟件,其所需的軟件包括:Network Protocol Adapter、Oracle Object for OLE2.X、
      SQL*Net Client2.X或Oracle Net8 Client8.X、SQL*Plus及Oracle8 ODBC Driver。在確定Web服務器已安裝上述軟件后,
      還必須利用SQL*Net Client2.X或Oracle Net8 Client8.X進行數據庫的連接測試并設置數據庫別名(Database Alias)。
      Oracle Objects Server共提供Oraclient、Orasession、Oraconnection、OraDatabase、OraDynaset、OraSQLstmt、
      OraField、Oraparameter、Oraparameter Array等九個對象供開發者使用。其功能與作用分述如下:
      1.Oraclient對象
      Oraclient對象是用來定義服務器端(Client或Workstation)的范圍,Oraclient會記錄此服務器端的所有Orasession對象。
      Oraclient由系統根據需要自動建立。
      2.Orasession對象
      Orasession對象用來在程序中管理Oraconnection、OraDatabase、OraDynaset等對象,其建立方法如下:
      Set Orasession=Create(“OracleInProcServer.Xorasession”)
      3.Oraconnection對象
      Oraconnection對象表示對OraDatabase對象的連接,當需要建立OraDatabase對象時,系統會自動產生一個Oraconnection
      對象。反之,當與數據庫斷開連接時,Oraconnection對象自動釋放。
      4.OraDatabase對象
      OraDatabase對象表示對數據庫服務器的虛擬登錄,其登錄方法如下:
      Set Oradadabase=Orasession.Dbopendatabase_
      (“數據庫別名”, “用戶名稱/密碼”,0)
      5.OraDynaset對象
      OraDynaset對象會將數據庫服務器符合SELECT命令的數據加以存儲在客戶端的緩沖區,讓用戶瀏覽或更新,最后將結果寫
      回到服務器,其方法如下:
      SetOraDynaset=OraDatabase.DbcreateDynaset(“SQL語句”,0)
      6.OraSQLstmt對象
      OraSQLstmt對象通常用來運行SQL命令、或是調用存儲過程,其用法如下:
      Set Orasqlstmt=Oradatabase.createSQl(“SQL語句”,0)
      7.OraField對象
      OraField對象表示在OraDynaset對象中的某個字段或數據項目,他通過Value屬性設置或取得OraDynaset對象中的某個字段
      值。
      8.Oraparameter對象
      Oraparameter對象表示一個在SQL命令或PL/SQL程序區塊中所附加的變量。
      9.Oraparameter Array對象
      Oraparameter Array對象是Oraparameter對象的數組類型,Oraparameter Array對象可以間接通過OraDatabase對象的
      Oraparameter數據集合來增加、存取或刪除某個變量。

      下面舉一具體例子說明如何在ASP中利用Oracle Object for OLE訪問Oracle 8。
      筆者編寫了一個在ASP中利用Oracle Object for OLE2.3查詢Oracle 8.0.5數據庫,并進行分頁顯示的程序。由于
      Orasession對象的屬性中沒有控制分頁的屬性,應此筆者自編了分頁控制的程序。
      以下共兩個ASP文件(query.asp和query1.asp),query.asp文件先取得數據庫表的內容,然后計算分頁的頁數,如果頁數超
      過一頁,則交由query1.asp處理,其程序代碼如下
      ‘query.asp
      <%
      ‘連接數據庫
      set orasession=createobject("oracleinprocserver.xorasession")
      set oradatabase=orasession.dbopendatabase("orant","scotter/tiger",0)
      ‘設置查詢條件
      sql="select * from cq_hjwj "
      set session(oradynaset)=oradatabase.dbcreatedynaset(sql,0)
      ‘設置頁長
      pagesize=15
      if session(oradynaset).recordcount=0 then
      response.write "無符合條件的數據"
      else
      response.write"<h3>查詢結果</h3>"
      ‘計算頁數
      pages=int(session(oradynaset).recordcount/pagesize)
      if pages*pagesize=session(oradynaset).recordcount then
      pages=int(session(oradynaset).recordcount/pagesize)
      else
      pages=int(session(oradynaset).recordcount/pagesize)+1
      end if
      if request("page")="" then
      page=1
      else
      page=cstr(request("page"))
      end if
      response.write"共"&pages&"頁,目前第"&page&"頁"
      response.write"<table border=5><tr>"
      for i=0 to session(oradynaset).fields.count - 1
      response.write"<td>"
      response.write session(oradynaset).fields(i).name
      response.write"</td>"
      next
      response.write "</tr>"
      startrow=(page-1)*pagesize+1
      endrow=page*pagesize
      oradynaset.moveto startrow
      for j=startrow to endrow
      response.write"<tr>"
      for i=0 to session(oradynaset).fields.count - 1
      response.write"<td>"
      response.write session(oradynaset).fields(i).value
      response.write"</td>"
      next
      response.write"</tr>"
      session(oradynaset).dbmovenext
      if session(oradynaset).eof then exit for
      next
      response.write"</table>"
      end if
      if page>1 then
      response.write "<a href='query1.asp?page=1'>第一頁</a> "
      response.write "<a href='query1.asp?page=" & page-1 & "'>上一頁</a> "
      end if
      if cint(page)<pages then
      response.write "<a href='query1.asp?page=" & page+1 & "'>下一頁</a> "
      response.write "<a href='query1.asp?page=" & pages & "'>最后頁</a> "
      end if
      set orasession=nothing
      %>
      <html>
      </html>

      ‘query1.asp
      <%
      ‘設置頁長
      pagesize=15
      if session(oradynaset).recordcount=0 then
      response.write "無符合條件的數據"
      else
      response.write"<h3>查詢結果</h3>"
      ‘計算頁數
      pages=int(session(oradynaset).recordcount/pagesize)
      if pages*pagesize=session(oradynaset).recordcount then
      pages=int(session(oradynaset).recordcount/pagesize)
      else
      pages=int(session(oradynaset).recordcount/pagesize)+1
      end if
      if request("page")="" then
      page=1
      else
      page=cstr(request("page"))
      end if
      response.write"共"&pages&"頁,目前第"&page&"頁"

      response.write"<table border=5><tr>"
      for i=0 to session(oradynaset).fields.count - 1
      response.write"<td>"
      response.write session(oradynaset).fields(i).name
      response.write"</td>"
      next
      response.write "</tr>"
      startrow=(page-1)*pagesize+1
      endrow=page*pagesize
      oradynaset.moveto startrow
      for j=startrow to endrow
      response.write"<tr>"
      for i=0 to session(oradynaset).fields.count - 1
      response.write"<td>"
      response.write session(oradynaset).fields(i).value
      response.write"</td>"
      next
      response.write"</tr>"
      session(oradynaset).dbmovenext
      if session(oradynaset).eof then exit for
      next
      response.write"</table>"
      end if
      if page>1 then
      response.write "<a href='query1.asp?page=1'>第一頁</a> "
      response.write "<a href='query1.asp?page=" & page-1 & "'>上一頁</a> "
      end if
      if cint(page)<pages then
      response.write "<a href='query1.asp?page=" & page+1 & "'>下一頁</a> "
      response.write "<a href='query1.asp?page=" & pages & "'>最后頁</a> "
      end if
      set orasession=nothing
      %>
      <html>
      </html>
      上述程序在Windows Nt4.0+Iss4.0上通過運行。
      由于ORACLE數據庫應用很廣泛,市場銷售量一直占前幾位,許多企業的MIS、IT系統都以ORACLE數據庫作為數據存儲基礎,
      將ORACLE數據庫的信息加到網頁中,可以大大地豐富網頁發布的信息,使我們的網頁既能發布實時、復雜的數據庫信息,
      又能接收客戶機對數據庫的修改信息。因此使用此方法能提高在Web上訪問ORACLE的效率。


      日韩精品一区二区三区高清