當(dāng)前位置: 首頁IT技術(shù) → ASP一些常用代碼的分享及使用方法

ASP一些常用代碼的分享及使用方法

更多

下面介紹的是關(guān)于ASP一些常用代碼的剪輯分享,對于ASP初學(xué)者還是有很大用處的,現(xiàn)在讓我們一起來學(xué)習(xí)一下吧。

計算字符的大小
len()是一個字算一個,一個字母也一個
lenb()是字母和字都是兩個
function getlen(str)
  n=0
  for i=1 to len(str)
    charasc=asc(mid(str,i,1))
    if ((charasc<127) and (charasc>=32)) then n=n+1 else n=n+2
  next
  getlen=n
end function


1.如何用Asp判斷你的網(wǎng)站的虛擬物理路徑
  答:使用Mappath方法
  < p align="center" >< font size="4" face="Arial" >< b >
  The Physical path to this virtual website is:
  < /b >< /font >
  < font color="#FF0000" size="6" face="Arial" >
  < %= Server.MapPath("\")% >
  < /font >< /p >
2.我如何知道使用者所用的瀏覽器?
  答:使用the Request object方法
  strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
  If Instr(strBrowser,"MSIE") < > 0 Then
    Response.redirect("ForMSIEOnly.htm")
  Else
    Response.redirect("ForAll.htm")
  End If

3.如何計算每天的平均反復(fù)訪問人數(shù)
  答:解決方法
  < % startdate=DateDiff("d",Now,"01/01/1990")
  if strdate< 0 then startdate=startdate*-1
  avgvpd=Int((usercnt)/startdate) % >
  顯示結(jié)果
  < % response.write(avgvpd) % >
  that is it.this page have been viewed since November 10,1998

4.如何顯示隨機圖象
  < % dim p,ppic,dpic
  ppic=12
  randomize
  p=Int((ppic*rnd)+1)
  dpic="graphix/randompics/"&p&".gif"
  % >
  顯示
  < img src="< %=dpic% >" >

5.如何回到先前的頁面
  答:< a href="< %=request.serverVariables("Http_REFERER")% >"
>preivous page< /a >
  或用圖片如:< img src="arrowback.gif" %=request.
serverVariables("HTTP_REFERER")% >" >

6.如何確定對方的IP地址
  答:< %=Request.serverVariables("REMOTE_ADDR)% >

7.如何鏈結(jié)到一副圖片上
  答:< % @Languages=vbscript % >
  < % response.expires=0
  strimagename="graphix/errors/erroriamge.gif"
  response.redirect(strimagename)
  % >

8.強迫輸入密碼對話框
  答:把這句話放載頁面的開頭
  < % response.status="401 not Authorized"
  response.end
  % >

9.如何傳遞變量從一頁到另一頁
  答:用 HIDDEN 類型來傳遞變量
  < % form method="post" action="mynextpage.asp" >
  < % for each item in request.form % >
  < input namee="< %=item% >" type="HIDDEN"
  value="< %=server.HTMLEncode(Request.form(item)) % >" >
  < % next % >
  < /form >

10.為何我在 asp 程序內(nèi)使用 msgbox,程序出錯說沒有權(quán)限
  答:由于 asp 是服務(wù)器運行的,如果可以在服務(wù)器顯示一個對話框,那么你
只好等有人按了確定之后,你的程序才能繼續(xù)執(zhí)行,而一般服務(wù)器不會有人守著,
所以微軟不得不禁止這個函數(shù),并胡亂告訴你 (:) 呵呵) 沒有權(quán)限。但是ASP和客
戶端腳本結(jié)合倒可以顯示一個對話框,as follows:
  < % yourVar="測試對話框"% >
  < % script language='java script' >
  alert("< %=yourvar% >")
  < /script >

11.有沒有辦法保護自己的源代碼,不給人看到
  答:可以去下載一個微軟的Windows Script Encoder,它可以對asp的腳本和
客戶端java script/vbscript腳本進行加密。。。不過客戶端加密后,只有ie5才能
執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝一個ie5就
有了)才能執(zhí)行。

12.怎樣才能將 query string 從一個 asp 文件傳送到另一個?
  答:前者文件加入下句: Response.Redirect("second.asp?" & Request.
ServerVariables("QUERY_STRING"))

13.global.asa文件總是不起作用?
  答:只有web目錄設(shè)置為web application, global.asa才有效,并且一個
web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service
 Manager設(shè)置application setting 怎樣才能使得htm文件如同asp文件一樣可以執(zhí)
行腳本代碼?

14.怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼?
  答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >菜
單屬性-〉主目錄- > 應(yīng)用程序設(shè)置(Application Setting)- > 點擊按鈕 "配置
"- > app mapping - >點擊按鈕"Add" - > executable browse選擇
\WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 輸入 htm method exclusions 輸
入PUT.DELETE 全部確定即可。但是值得注意的是這樣對htm也要由asp.dll處理,
效率將降低。

15.如何注冊組件
  答:有兩種方法。
  第一種方法:手工注冊 DLL 這種方法從IIs 3.0一直使用到IIs 4.0和其它的
Web Server。它需要你在命令行方式下來執(zhí)行,進入到包含有DLL的目錄,并輸入
:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它會把
dll的特定信息注冊入服務(wù)器中的注冊表中。然后這個組件就可以在服務(wù)器上使用
了,但是這個方法有一個缺陷。當(dāng)使用這種方法注冊完畢組件后,該組件必須要相
應(yīng)的設(shè)置NT的匿名帳號有權(quán)限執(zhí)行這個dll。特別是一些組件需要讀取注冊表,所
以,這個注冊組件的方法僅僅是使用在服務(wù)器上沒有MTS的情況下,要取消注冊這
個dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u
aneiodbc.dll

第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但
是它提供了巨大的改進。MTS允許你指定只有有特權(quán)的用戶才能夠訪問組件,大大
提高了網(wǎng)站服務(wù)器上的安全性設(shè)置。在MTS上注冊組件的步驟如下:
  1) 打開IIS管理控制臺。
  2) 展開transaction server,右鍵單擊"pkgs installed"然后選擇"new
package"。
  3) 單擊"create an empty package"。
  4) 給該包命名。
  5) 指定administrator帳號或則使用"interactive"(如果服務(wù)器經(jīng)常是使用
administrator 登陸的話)。
  6) 現(xiàn)在使用右鍵單擊你剛建立的那個包下面展開后的"components"。選擇
"new then component"。
  7) 選擇 "install new component" [b]。
  8) 找到你的.dll文件然后選擇next到完成。
  要刪除這個對象,只要選擇它的圖標(biāo),然后選擇delete。
  附注:特別要注意第二種方法,它是用來調(diào)試自己編寫組件的最好方法,而不
必每次都需要重新啟動機器了。

16. ASP與Access數(shù)據(jù)庫連接:

<%@ language=VBscript%>
  <%
  dim conn,mdbfile
  mdbfile=server.mappath("數(shù)據(jù)庫名稱.mdb")
  set conn=server.createobject("adodb.connection")
  conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)
據(jù)庫密碼;dbq="&mdbfile

%>

17. ASP與SQL數(shù)據(jù)庫連接:

<%@ language=VBscript%>
  <%
  dim conn
  set conn=server.createobject("ADODB.connection")
  con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱或IP地址;
UID=sa;PWD=數(shù)據(jù)庫密碼;DATABASE=數(shù)據(jù)庫名稱
  %>

建立記錄集對象:

set rs=server.createobject("adodb.recordset")
  rs.open SQL語句,conn,3,2


  18. SQL常用命令使用方法:

(1) 數(shù)據(jù)記錄篩選:

sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"

sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名
[desc]"

sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]"

sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')"

sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"

(2) 更新數(shù)據(jù)記錄:

sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達式"

sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達
式"

(3) 刪除數(shù)據(jù)記錄:

sql="delete from 數(shù)據(jù)表 where 條件表達式"

sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)

(4) 添加數(shù)據(jù)記錄:

sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"


sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添
加到目標(biāo)數(shù)據(jù)表)

(5) 數(shù)據(jù)記錄統(tǒng)計函數(shù):

AVG(字段名) 得出一個表格欄平均值
  COUNT(*|字段名) 對數(shù)據(jù)行數(shù)的統(tǒng)計或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計
  MAX(字段名) 取得一個表格欄最大的值
  MIN(字段名) 取得一個表格欄最小的值
  SUM(字段名) 把數(shù)據(jù)欄的值相加

引用以上函數(shù)的方法:

sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達式"
  set rs=conn.excute(sql)

用 rs("別名") 獲取統(tǒng)的計值,其它函數(shù)運用同上。

(5) 數(shù)據(jù)表的建立和刪除:

CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個數(shù)據(jù)表)

19. 記錄集對象的方法:

rs.movenext 將記錄指針從當(dāng)前的位置向下移一行
  rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行
  rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行
  rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行
  rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行
  rs.absolutepage=N 將記錄指針移到第N頁的第一行
  rs.pagesize=N 設(shè)置每頁為N條記錄
  rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù)
  rs.recordcount 返回記錄總數(shù)
  rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否
  rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否
  rs.delete 刪除當(dāng)前記錄,但記錄指針不會向下移動
  rs.addnew 添加記錄到數(shù)據(jù)表末端
  rs.update 更新數(shù)據(jù)表記錄

20 Recordset對象方法

Open方法

recordset.Open Source,ActiveConnection,CursorType,LockType,Options

Source
  Recordset對象可以通過Source屬性來連接Command對象。Source參數(shù)可以是一
個Command對象名稱、一段SQL命令、一個指定的數(shù)據(jù)表名稱或是一個Stored
Procedure。假如省略這個參數(shù),系統(tǒng)則采用Recordset對象的Source屬性。

ActiveConnection
  Recordset對象可以通過ActiveConnection屬性來連接Connection對象。這里
的ActiveConnection可以是一個Connection對象或是一串包含數(shù)據(jù)庫連接信息(
ConnectionString)的字符串參數(shù)。

CursorType
  Recordset對象Open方法的CursorType參數(shù)表示將以什么樣的游標(biāo)類型啟動數(shù)
據(jù),包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分
述如下:
  --------------------------------------------------------------
  常數(shù) 常數(shù)值 說明
  -------------------------------------------------------------
  adOpenForwardOnly 0 缺省值,啟動一個只能向前移動的游標(biāo)(Forward
Only)。
  adOpenKeyset 1 啟動一個Keyset類型的游標(biāo)。
  adOpenDynamic 2 啟動一個Dynamic類型的游標(biāo)。
  adOpenStatic 3 啟動一個Static類型的游標(biāo)。
  -------------------------------------------------------------
  以上幾個游標(biāo)類型將直接影響到Recordset對象所有的屬性和方法,以下列表
說明他們之間的區(qū)別。

-------------------------------------------------------------
  Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic
adOpenStatic
  -------------------------------------------------------------
  AbsolutePage 不支持 不支持 可讀寫 可讀寫
  AbsolutePosition 不支持 不支持 可讀寫 可讀寫
  ActiveConnection 可讀寫 可讀寫 可讀寫 可讀寫
  BOF 只讀 只讀 只讀 只讀
  Bookmark 不支持 不支持 可讀寫 可讀寫
  CacheSize 可讀寫 可讀寫 可讀寫 可讀寫
  CursorLocation 可讀寫 可讀寫 可讀寫 可讀寫
  CursorType 可讀寫 可讀寫 可讀寫 可讀寫
  EditMode 只讀 只讀 只讀 只讀
  EOF 只讀 只讀 只讀 只讀
  Filter 可讀寫 可讀寫 可讀寫 可讀寫
  LockType 可讀寫 可讀寫 可讀寫 可讀寫
  MarshalOptions 可讀寫 可讀寫 可讀寫 可讀寫
  MaxRecords 可讀寫 可讀寫 可讀寫 可讀寫
  PageCount 不支持 不支持 只讀 只讀
  PageSize 可讀寫 可讀寫 可讀寫 可讀寫
  RecordCount 不支持 不支持 只讀 只讀
  Source 可讀寫 可讀寫 可讀寫 可讀寫
  State 只讀 只讀 只讀 只讀
  Status 只讀 只讀 只讀 只讀
  AddNew 支持 支持 支持 支持
  CancelBatch 支持 支持 支持 支持
  CancelUpdate 支持 支持 支持 支持
  Clone 不支持 不支持
  Close 支持 支持 支持 支持
  Delete 支持 支持 支持 支持
  GetRows 支持 支持 支持 支持
  Move 不支持 支持 支持 支持
  MoveFirst 支持 支持 支持 支持
  MoveLast 不支持 支持 支持 支持
  MoveNext 支持 支持 支持 支持
  MovePrevious 不支持 支持 支持 支持
  NextRecordset 支持 支持 支持 支持
  Open 支持 支持 支持 支持
  Requery 支持 支持 支持 支持
  Resync 不支持 不支持 支持 支持
  Supports 支持 支持 支持 支持
  Update 支持 支持 支持 支持
  UpdateBatch 支持 支持 支持 支持
  --------------------------------------------------------------
  其中NextRecordset方法并不適用于Microsoft Access數(shù)據(jù)庫。

LockType
  Recordset對象Open方法的LockType參數(shù)表示要采用的Lock類型,如果忽略這
個參數(shù),那么系統(tǒng)會以Recordset對象的LockType屬性為預(yù)設(shè)值。LockType參數(shù)包
含adLockReadOnly、adLockPrssimistic、adLockOptimistic及
adLockBatchOptimistic等,分述如下:

-------------------------------------------------------------
  常數(shù) 常數(shù)值 說明
  --------------------------------------------------------------
  adLockReadOnly 1 缺省值,Recordset對象以只讀方式啟動,無法運行
AddNew、Update及Delete等方法
  adLockPrssimistic 2 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)會暫時鎖住其他用戶的動作
,以保持數(shù)據(jù)一致性。
  adLockOptimistic 3 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)并不會鎖住其他用戶的動作
,其他用戶可以對數(shù)據(jù)進行增、刪、改的操作。
  adLockBatchOptimistic 4 當(dāng)數(shù)據(jù)源正在更新時,其他用戶必須將
CursorLocation屬性改為adUdeClientBatch才能對數(shù)據(jù)進行增、刪、改的操作。

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)