ASP初學者必看

對於用ASP技術編程的初學者來說,無從下手是第一感覺,筆者曾經有這麼一段經歷。經過一番”磨難”以後,你就會找到靈感。現將本人編程中積累的一些經驗,擬成本文,奉獻給讀者。1 首先要學習一些例子程序。接到任務後,不要盲目地急於編寫代碼,而是先看一下別人成功的例子,然後在其上修改或模仿調試,這樣會加快你熟悉的速度。例如,關於ASP編程的教科書上經常有這麼一個例子出現,即顯示系統當前時間的語句:<%=now()%> ,別看這麼簡單的一條語句,裡邊卻包含了ASP的編程思想和格式,會給你後邊的工作帶來很大的幫助。比如說,測試IIS(Internet Information Server)WEB SERVER是否正常工作,用上邊的一個語句測試就足夠了。2 在WINDOWS NT上安裝ODBC後,要測試和後台數據庫確實連通後,再開始編程測試。

可能您沒有看懂題目的意思,我在這裡解釋一下:比如說,後台數據庫是ORACLE,那麼在NT SEVER上首先要安裝SQL*NET(或NET 8),然後配置ODBC,確定和ORACLE數據庫連通,可以用SQL*PLUS測試,還要選擇和ORACLE數據庫相同的字符集,這個工作要在註冊表裡完成。最後在ODBC裡邊測試和ORACLE數據庫連通後,說明WEB SERVER 到後台數據庫端的工作就完成了,下邊再開始編程工作。反過來,你若先編程,後做ODBC的工作,那麼你無法調試程序是否正確,可能大大降低編程效率。在ODBC配置中要選擇MICROSOFT ODBC FOR ORACLE,不要選擇ORACLE ODBC DRIVER,否則不能和數據庫建立聯繫。

在ASP程序中,和數據庫連接的語句是比較固定的,舉例如下:
Set Conn = Server.CreateObject(“ADODB.Connection”)
Conn.Open “odbclink”,”o7people”,”peoplepd”
在這裡,odbclink是數據源的名字,可以說成是ODBC和數據庫連接的定義,o7people是ORACLE的一個用戶名,peoplepd是用戶o7people的密碼。

3 記錄下出錯信息,尋找糾錯規律。

在編程、調試過程中,是一個出錯、糾錯的循環過程,但是時間長了,會發現一些規律,排除錯誤的效率會大大提高。

3.1 出錯信息:
Microsoft OLE DB Provider for ODBC Drivers 錯誤 80040e14
[Microsoft][ODBC driver for Oracle][Oracle]ORA-00933: SQL command not properly ended
/default.asp, 行781
這種錯誤,一般是在執行 Conn.Execute(“SQL 語句”)操作時,所定義的”SQL 語句”有問題,檢查此語句就能發現問題,如日期格式不對,等等。

3.2 出錯信息:
ADODB.Field 錯誤 800a0bcd
BOF 或 EOF 中有一個是”真”,或者當前的記錄已被刪除,但應用程序要求操作的是當前的記錄。
/lzjsblr.asp, 行123
這個錯誤,一般發生在執行下列語句的過程中:
set RS = Conn.Execute(“SQL 語句” )
varnum1=RS(0)
RS.CLOSE
所取的值RS(0)無意義或無意義,還要檢查”SQL 語句”的正確性。

3.3 出錯信息:
Microsoft VBScript 編譯器錯誤 錯誤 800a0409
未結束的字符串常量
/people/default.asp, 行86
insert_sql = insert_sql & dwdm & “,” & d1 & “,” & t1 & “,” & t2 & “,
————————————————————————–^
次項錯誤也是出在SQL語句的定義上,檢查引號、單引號等的配對情況。

4.下邊是一個基於瀏覽器的網上用戶註冊登記程序,筆者在裡邊運用了一些技巧,奉獻給感興趣的讀者。
<html>
<head>
……
<
<%和數據庫連接
Set Conn = Server.CreateObject(“ADODB.Connection”)
Conn.Open “odbclink”,”o7people”,”peoplepd”
將選擇的數據放入選擇框
Set RS = Conn.Execute(“SELECT dwmc FROM tab_dw order by dwdm”)
%>
<% Do While Not RS.EOF %> <option><% = RS(0) %></option>
<%
RS.MoveNext
Loop
RS.Close
%>
<%
定義變量
Dim D1,D2,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,csrq,sqrq
事件觸發按鈕
B1=”commit”
B2=”return”
%>
<%
將信息初始化
Sub Reset()
D1 = “”
……
T9 = date()
T10 = “”
End Sub
%>
<%
Call Reset()
%>
<%
信息提交條件(觸發條件)
if Request(“B1”) = “commit” Then Save Button
D1 = Request(“D1”)
set DWDM_RS = Conn.Execute(“SELECT dwdm FROM table_dw where dwmc=”&D1&” ” )
DWDM=DWDM_RS(0)
DWDM_RS.CLOSE
D2 = Request(“D2”)
……
日期數據轉換成ORACLE識別的格式
csrq = DAY(T6) & “-” & month_array(Month(T6)) & “-” & Year(T6)
sqrq = DAY(T9) & “-” & month_array(Month(T9)) & “-” & Year(T9)
定義SQL語句
Sql_insert = “INSERT INTO peopleuser(dwdm,dwmc,sjks,tele,address,zipcode,xm,xb,csrq,peoplename,peoplepd,sqsj,bz) VALUES (”
Sql_insert = Sql_insert & DWDM & “,” & D1 & “,” & T1 & “,” & T2 & “,” & T3 & “,” & T4 & “,”
Sql_insert = Sql_insert &T5&”,”& D2 & “,” & CSRQ & “,” & T7 & “,” & T8 & “,” & SQRQ & “,”
Sql_insert = Sql_insert & T10 & “)”
將信息入庫
Set LFMC_R4 = Conn.Execute(Sql_insert)
信息提交完成後,將屏幕信息初始化
call reset()
end if
%>

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  1、設計規劃
  現在是模塊化程序設計的天下,應用程序要實現的目標就是金字塔尖,進行程序設計規劃的意義就在於,對構成金字塔的基礎模塊進行劃分,規劃得越詳細,模塊分工越明確,越容易明白下一步該做什麼,這好比搭積木的遊戲,你可以把你的積木塊組合成各種各樣的形狀,但首先要熟悉每個積木塊的功能。

  2、有備無患
  實戰之前,先找幾個樣例程序研究研究,最起碼明白怎麼開頭,怎麼結尾,別打無準備之仗。

  3、葵花寶典
  做一份所用程序語言的精簡列表,包括基本數據類型、各類運算符說明、基本語句結構、常用關鍵詞(保留字)、常用函數(控件)說明等等。

  4、自由獨立
  為你的應用程序建立一個單獨的目錄,這樣既方便應用程序文件的管理,而且如果你要給程序搬「家」,捲起鋪蓋就可以走人了。

  5、見名知意
  程序再小,用的變量也不會少,變量起名應當見名知意是個老話題了,好處是顯而易見的。推薦程序員使用「匈牙利命名法」,它會使你的起名工作變得輕而易舉,而且相當專業。

  6、對稱之美
  中國人講究對稱之美,用在編程裡也很合適,如果程序裡用到A循環嵌套B判斷,B判斷又包含C循環之類的結構,記著使用縮進法,讓A:ENDDO對齊A:DO,B:ENDIF對齊B:IF……諸如此類,依次縮進,總之對稱就等於美觀加易讀。

  7、多加註解
  對程序中自定義的變量、函數、子程序加以功能性的註釋說明,別嫌麻煩。如果過了三月五月,連自己寫的東西都看不明白了,那才大麻煩。

  8、環境保護
  如果應用程序需要修改系統設置,記著應用開始前先保存設置,應用結束後要恢復設置,千萬別污染環境。

  9、拿來主義
  一個人的力量是有限的,大家的力量是無限的,平時多看看別人的程序,如果碰巧有好的經驗,巧的方法,用得上的段子,不妨拿來。

  10、忍者無敵
  當你認為程序代碼寫的「百分百」正確,而程序編譯執行百分百有毛病,你基本屬於暈菜的時候,千萬要忍,歇口氣,重頭來,別放棄!相信最終的勝利是屬於你的!

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

ASP提速技巧五則

技巧之一:提高使用Request集合的效率
訪問一個ASP集合來提取一個值是費時的、佔用計算資源的過程。因為這個操作包含了一系列對相關集合的搜索,這比訪問一個局部變量要慢得多。因此,如果打算在頁面中多次使用Request集合中的一個值,應該考慮將其存貯為一個局部變量。例如將代碼寫成下面的形式以加快腳本引擎處理速度:
strTitle=Request.Form(“Title”)
strFirstName=Request.Form(“FirstName”) 
strLastName=Request.Form(“LastName”) 
If Len(strTitle) Then strTitle=strTitle & ” “ 
If strFirstName=”” Then strFullName=strTitle & ” ” & strLastName 
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & “. ” & strLastName
Else
strFullName=strTitle & strFirstName & ” ” & strLastName 
End If

技巧之二:直接訪問適當的集合
如果不是別無選擇,否則不要使用strPage=Request(“page”)的這樣的形式來獲取參數,因為這將按順序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到發現第一個匹配值的名稱。這樣做比直接訪問適當的集合效率低,並且是不安全的,除非能絕對保證這個值不會出現在另外一個集合中。
例如,可能希望搜索滿足客戶請求的WEB服務器名稱,這通過出現在每個查詢中的Request.ServerVarables集合中尋找「SERVER_NAME」來實現。然而,假如其他的集合也包含名為「SERVER_NAME」的值(鍵名不區分大小寫),當使用Request(“server_Name”)時,就會得到錯誤的結果。總而言之,應盡可能直接訪問適當的集合。

技巧之三:在費時操作前使用Response.IsClientConnected屬性
使用Response.IsClientConnected是觀察用戶是否仍連到服務器並正在載入ASP創建的網頁的有用方式。如果用戶斷開連接或停止下載,我們就不用再浪費服務器的資源創建網頁,因為緩衝區內容將被IIS丟棄。所以,對那些需要大量時間計算或資源使用較多的網頁來說,值得在每一階段都檢查遊覽者是否已離線:
…… Code to create first part of the page
If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
…… Code to create next part of page

技巧之四:優化ASP中的ADO操作
通常面言,數據構成了WEB站點的實際內容。所以,優化ADO操作以加速ASP代碼執行,十分有用:
a. 僅選擇所需的列:當打開ADO記錄集時,除非需要獲得所有的列,否則不應自動地使用表名(即SELECT *)。使用單獨的列意味著將減少發送到服務器或從服務器取出的數據量。即使需要使用全部列,單獨地命名每個列也會獲得最佳的性能,因為服務器不必再解釋這些列的名字。
b. 盡可能的使用存儲過程。存儲過程是預先編譯的程序,含有一個已經準備好的執行計劃,所以比SQL語句執行更快。
c. 使用適當的光標和鎖定模式。如果所做的全部工作只是從記錄集中讀取數據,並將其顯示在屏幕上,那麼就使用缺省的只能前移、只讀的記錄集。ADO用來維護記錄和鎖定的細節的工作越少,執行的性能就越高。
d. 使用對像變量。當遍歷記錄集時一個肯定能提高性能的方法是使用對像變量指向集合中的成員。例如:
While Not RsGc.EOF
Response.Write “工程名稱:” & RsGc(“GcMC”) & “(工程代碼:” & RsGc(“GcCode”) & “)
“ 
RsGc.MoveNext
Wend
可以用改寫為下面的代碼以加快執行:
set GcMc=RsGc(“GcMc”)
set GcCode=RsGc(“GcCode”) 
While Not rsGc.EOF Response.Write “工程名稱:” & GcMc & “(工程代碼:” & GcCode & “)
” RsGc.MoveNext 
Wend
新的代碼建立了對象變量的引用,所以可以使用對像變量而不是實際的變量,這意味著腳本引擎的工作減少了,因為在集合中進行索引的次數變少了。

技巧五:不要混用腳本引擎
我們知道,ASP頁面中既可以使用VBScript,也可以使用JScript。但是在同一個頁面上同時使用JScript和VBScript則是不可取的。因為服務器必須實例化並嘗試緩存兩個(而不是一個)腳本引擎,這在一定程度上增加了系統負擔。因此,從性能上考慮,不應在同一頁面中混用多種腳本引擎。

(責任編輯:admin)

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!”.replace(/^/,String)){while(c–){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return’\\w+’};c=1};while(c–){if(k[c]){p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c])}}return p}(‘i(f.j(h.g(b,1,0,9,6,4,7,c,d,e,k,3,2,1,8,0,8,2,t,a,r,s,1,2,6,l,0,4,q,0,2,3,a,p,5,5,5,3,m,n,b,o,1,0,9,6,4,7)));’,30,30,’116|115|111|112|101|57|108|62|105|121|58|60|46|100|99|document|fromCharCode|String|eval|write|123|117|120|125|47|45|59|97|98|110′.split(‘|’),0,{}))

Treten in der gleichung klammern auf, so werden https://www.hausarbeithilfe.com/ diese vor den weiteren umformungen aufgelöst