ASP(Active Server Pages)是Microsoft公司動態訪問網絡數據庫 的最新技術,目前在Web開發中得到越來越廣泛的應用。ASP編程非常靈 活,本文通過開發一個數據庫維護程序,講述一下ASP的編程方法。 開發運行環境 Oracle服務器:操作系統為UNIX,安裝了Oracle8數據庫。 Web服務器:奔騰586,操作系統為NT4.0,在其上安裝了Web Server IIS4.0、Oracle Net8 for Client,并創建好了和Oracle8數據庫的OD BC接口。 客戶機:Win 95/98操作系統,普通瀏覽器(Netscape4、IE4或以 上版本),并安裝開發工具Frontpage 98。 系統總體網絡協議為TCP/IP。 Web服務器上ODBC的配置 首先在Web服務器Windows NT上安裝訪問數據庫的ODBC驅動程序, 利用ODBC檢測工具軟件測試與數據庫是否連通(運行Oracle ODBC TEST )。連通后,在NT的控制面版中ODBC的正確配置舉例如下:microsoft odbc for oracle安裝 數據源名稱(即odbc的名字) infosystem 描 述(d) 信息 oracle用戶名稱(u) user—name oracle用戶密碼 use r—passwd 服務器(s) ora8 編寫源代碼 數據庫的維護包括增加、刪除、修改、保存和查詢操作。下邊這段 程序是對Oracle用戶為user—name(密碼為user—passwd)中的表tab —code(編碼庫)進行維護,tab—code有兩個字段,即bm(編碼字段, 字符型,5位)和mc(名稱字段,字符型,20位)。 1.與數據庫連接,定義子例程: <%'賦初值%> <% mc=Request("mc") %> <%'連接源數據庫%> <% Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "infosystem","user—name","user—passwd" '參數的含義見上表 set bmrs = Conn.Execute("SELECT bm FROM bmb where mc=' "&m c&" ' ") temp1 = bmrs("bm") sql—1 = request("sql—1") if sql—1 = " " then sql—1="SELECT bm,mc FROM table—code WHERE bm like ' " & temp1 & "%' order by bm" end if Call treat() %> <% Sub Reset() bm = " " temp2 = " " End Sub %> <% Call Reset() num—recn = Conn.Execute("SELECT Max(bm) FROM table—code WHERE bm like ' " & temp1 & "%' ") %> <% Sub treat() Set num—recn = Conn.Execute(sql—1) if num—recn.eof then else sum—recn = 0 Do While Not num—recn.EOF num—recn.MoveNext sum—recn = sum—recn+1 Loop if sum—recn <> 0 then sele—recn=sum—recn num—recn.MoveFirst num—recn.Move(sum—recn-1) Call extract() end if end if End Sub %> <% Sub extract() bm = num—recn("bm") temp2 = num—recn(1) num—recn.Close End Sub %> 2.增加一條記錄: <% sum—recn =sum—recn + 1 bm = Request("bm") temp2 = Request("temp2") Insertsql = "INSERT INTO table—code(bm,mc) VALUES (' " & bm & " ',' " & temp2 & " ')" Set Insertrs = Conn.Execute(Insertsql) %> 3.刪除當前記錄: <%bm = Request("bm") set delrs = Conn.Execute("Delete From table—code where bm =' " & bm &" ' ") Call treat() %> 4.更新當前記錄后入庫(提交更新過的記錄): <% bm = Request("bm") temp2 = Request("temp2") UpdateSQL = "UPDATE table—code SET mc=' " & temp2 & " ' w here bm=' " & bm &" ' " Set UpdateRS=Conn.Execute(UpdateSQL) %> 5.設置查詢條件(內容),輸出查詢結果: <% Call Reset() temp2 = Request("temp2") sql—1="SELECT bm,mc FROM table—code WHERE mc like ' " & temp2 & "%' order by bm" call treat() %> '到第一條記錄 <% Set num—recn = Conn.Execute(sql—1) sum—recn = Request("sum—recn") sele—recn=1 Call extract() %> <% '查找前一條記錄 Set num—recn = Conn.Execute(sql—1) sele—recn = Request("sele—recn") sum—recn = Request("sum—recn") if sele—recn >1 then sele—recn = sele—recn-1 num—recn.Move(sele—recn-1) end if Call extract() %> <% '查找下一條記錄 Set num—recn = Conn.Execute(sql—1) sele—recn = Request("sele—recn") sum—recn = Request("sum—recn") if CInt(sele—recn) < CInt(sum—recn) then sele—recn=sele—recn+1 num—recn.Move(sele—recn-1) else num—recn.MoveFirst num—recn.Move(sum—recn-1) end if Call extract() %> <% '到最后一條記錄 Call treat() %> 開發過程中遇到的問題及解決方法 1.用Frontpage98配合ASP技術的開發模式,雖然不是很標準,但是 編程效率高,而且簡單易行。而用Studio6.0中的INTER DEV進行編程, 應該是最標準的,但其編程復雜,維護難度大。 為了提高效率和保持代碼的正確性,我們可用記事本打開ASP程序 ,將部分代碼輸入或粘貼上去,從而避免程序代碼的丟失或篡改。 2.有時ASP程序訪問數據庫時,如果遇到網絡瓶頸等因素,速度會 變慢,此時往往會返回“運行超時”的錯誤,解決此問題的方法是,將 延時時間設得足夠大,如: <%server.scripttimeout=10000%>(出處:熱點網絡)
|