用ASP與ADO查詢Web資料庫

來源:互聯網
上載者:User
ado|web|資料|資料庫   ASP和ADO簡介

  DO中可用VBScript、JavaScript 語言來控制資料庫的訪問(而ASP恰恰是指令碼語言的解釋環境)和查詢結果的輸出;ADO中使用RecordSets對象對資料庫進行操作;可以串連多種支援OD BC的資料庫。資料查ASP(Active Server Pages)是一個伺服器端的(Server-side)指令碼執行環境,使用者可用它產生和執行動態、互動的、高效能的Web伺服器應用程式。當指令碼在伺服器端而不是在用戶端執行時,Web伺服器將完成產生髮往瀏覽器的HTML(Hypertext Markup Langua ge)頁的所有工作。圖1
  圖1是ASP的工作模式。當瀏覽器向Web伺服器提出檔案(.asp)的請求時,一個ASP指令碼就開始執行,這時Web伺服器調用ASP,把該檔案全部讀入並執行每一條命令,然後將結果以HTML頁面形式送回瀏覽器。
  ADO(ActiveX Data Object,ActiveX資料對象)是一個ASP內建的A ctiveX伺服器組件(ActiveX Server Component),用於資料庫訪問,可把它與ASP結合起來,建立提供資料庫資訊的網頁內容,對資料庫進行查詢、插入、更新、刪除等操作。
  要執行ADO,伺服器端須安裝Windows NT Server和Internet I nformation Serv er(IIS),而用戶端只要有IE或Netscape較新版本的瀏覽器即可。網站資料庫訪問的幾種方案
  實現Web資料庫訪問大致可分為兩類,一類是以Web伺服器作為中介,把瀏覽器和資料來源串連起來,在伺服器端執行對資料庫的操作;另一類是把應用程式和資料庫下載到用戶端,在用戶端執行對資料庫的訪問。
  1. 公用網關介面CGI(Common Gateway Interface)
  當瀏覽器發出HTTP請求時,Web伺服器執行相應的應用程式,訪問網站資料庫,並將查詢結果以HTML格式送回到瀏覽器。這種方式有很多缺點,功能有限、開發困難,且不具備交易處理(Transaction)功能, 這在很大程度上限制了它的應用。
  2. Internet資料庫連接器IDC(Internet Database Connector)
  這是一種簡易方案,對資料庫的操作仍然放在Web端,但使用者可通過SQL(Structured Query Language)語句對資料庫進行查詢、輸入、更新、刪除等操作。IDC設計簡易,不用編譯就可直接執行,且支援對資料的多重查詢(Multiple Query)。
  3. 先進資料庫連接器ADC(Advanced Data Connector)
  前兩種方案中對資料庫的操作都是在伺服器端進行,而ADC是在瀏覽器端執行資料查詢動作。當瀏覽器提出對資料庫的操作請求時,ADC 先將相應的資料庫下載到瀏覽器端,在使用者端對資料庫進行操作。顯然,這種方案效率很高。用戶端對資料庫的查詢是由安裝在用戶端的A DC ActiveX Control完成的,而這個ActiveX Control是由站台伺服器自動下載並安裝在用戶端的。
  4. ADO與ASP
  這是一種完全的Web資料庫訪問方案,可把ADO與ASP結合起來,建立提供資料庫資訊的網頁內容,在網頁中執行SQL命令,對資料庫進行查詢、插入、更新、刪除等操作。A詢執行個體:港澳證件資訊查詢
  本例要完成的操作是對港澳出入境資料庫進行查詢,客戶可給出一種或幾種查詢條件,然後按要求顯示查詢結果。
  1. 確定資料來源
  要訪問網上資料庫,首先設定資料來源。在伺服器上開啟"我的電腦"中的"控制台",雙擊"ODBC";在"系統DSN"下選"添加",選出預先設好的資料庫種類、名稱和位置。這裡要用到的是FoxPro資料庫,資料來源名稱為GACX,主要資料庫名稱為visa.dbf,編碼資料庫名稱為zd.dbf 。
  2. ADO查詢資料庫的使用
  ADO查詢資料庫的設計方法是先用Server.CreatObject取得對象" ADODB.Connection "的一個執行個體,並用"Open"開啟待訪問的資料庫:
  Set Conn=Server.CreatObject("ADODB.Connection")
  Conn.Open "待訪問的資料庫名稱"
  然後執行SQL命令,即對資料庫進行操作,這裡要使用Execute命令 :
  Set RS =Conn .Execute( " Select ...From...Where...")下一步就可對資料庫進行查詢操作,要用到RecordSets對象的如下命令:
  * RS.Fildes.Count
   RecordSets的欄位數
  * RS(i).Name
   第i個欄位名
  * RS(i)
   第i個欄位的記錄
  * RS("欄位名")
    指定欄位的記錄
  * RS.EOF
  是否指向最後一個欄位 True or False
  * RS.MoveFirst
  指向第一條記錄
  * RS.MovePrev
  指向前一條記錄
  * RS.MoveNext
  指向後一條記錄
  * RS.MoveLast
  指向最後一條記錄
  * RS.GetRows
   將查詢結果存放在數組中,然後再從數組中讀取
  * RS.Properties.Count
   得到ADO的Connection或ResultSet的屬性總數
  * RS.Properties(Item).Name 得到ADO的Connection或ResultSe t的屬性名稱
  * RS.Properties(Item)
   得到ADO的Connection或ResultSet的屬性值
  3. 具體實現
  首頁面為港澳證件資訊查詢,對應程式為gacx.asp。查詢結果以兩種方式顯示,一是顯示主要資訊——港澳證件資訊查詢結果清單,對應程式為gacxlb.asp;一是顯示全部資訊——港澳證件資訊查詢結果, 對應程式為gacxxq.asp。如果查詢條件不能滿足時,還將顯示一個提示頁面,告訴使用者不存在滿足條件的結果,由程式gacxts.asp完成。
  根據客戶提供的資料庫和要求查詢的各項內容建立查詢、查詢結果、查詢結果清單頁面,並給出一個簡單的提示介面,告訴使用者不存在滿足條件的結果,請重新查詢,這些工作可用FrontPage 98完成,整個頁面應該做到簡潔大方,主題鮮明。程式碼在Microsof t Visual I nterDev下編寫。
  下面處理編碼資料庫zd.dbf中的內容。從圖2中可看到有很多帶下拉框的選項,例如"性別"、"出生地"等,這些選項的內容都是從zd.d bf資料庫中提取出來的。因為有的選項內容很多,例如出境口岸有101 項之多,雖然也可用< select><option>...</option></se lect>格式在HTML頁面中把各個選項列舉出來,但將給程式的維護帶來很大麻煩, 一旦編碼資料庫的內容有變動,程式也將作很多修改。而且帶下拉框的選項都是在zd.dbf中編碼,往主要資料庫中輸入資料時這些選項都只輸入編碼,但顯示時卻不能顯示編碼,必須把編碼對應的漢字顯示出來。這段程式碼如下(以性別為例): 圖2
  <%
  Set Conn=Server.CreatObject("ADODB.Connection")
  Conn.Open "GACX"
  Set RS =Conn.Execute("Select BC,MC From zd Where BC Like "se%"")
  Response.Write"<SELECT SIZE=1 NAME="SEX">"Do While Not R S.EOF
  Response.Write"<option value=‘"RS(0)"'>"&RS(1)
   Rs.MoveNext
  Loop
  Response.Write "</SELECT>"
  RS.Colse
  Conn.Colse
  %>
  其中,zd.dbf包含兩個欄位MC、BC,MC表示待編碼項,如男、女,BC 表示編碼,如性別編碼的前兩位為"se",男用"se1"表示,女用"se2" 表示。
  資料庫查詢中最重要的是如何取得查詢條件。本例中要查詢的項可以分為兩類:一類是輸入的text類的查詢條件,另一類是從下拉框中選出來的項,在處理時要區別對待。te xt類型的查詢條件很好處理, 例如姓名,筆者輸入的內容命名為"xm",如果輸入的查詢項不為空白時就增加一個查詢條件"NAME=Request.Form("xm")"即可。下拉框的處理較複雜,當下拉框選中一項時,例如性別選中男,下拉框中輸入的是"se 1"(但反映在資料庫中時為"S EX=1",因為資料庫中輸入字典中帶編碼的項時只輸入編碼),就是要查詢"SEX=se1"的項。處理時要把"se1"中的"1"提取出來,用一個函數mid即可,查詢條件為"SEX=mid("se1",3, 1)",即從資料庫中尋找SEX=1的項,並把所有滿足條件的項不重複地列舉出來。
  查詢結果顯示很容易實現,只須把查詢結果的每條記錄按列表的方式顯示出來即可,但在顯示查詢結果時要顯示編碼對應的漢字,就是到字典中去找編碼為"se"&"1" 的項所對應的編碼值,程式如下:
  <table border="1" width="95%" bordercolor="#C0C0C0" cell spacing="0" cell padding="0"



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.