ASP 編程中 20 個(gè)非常有用的例子
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
1.如何用asp判斷你的網(wǎng)站的虛擬物理路徑 [br]答:使用mappath方法 [br]< p align="center" >< font size="4" face="arial" >< b > [br]the physical path to this virtual website is: [br]< /b >< /font > [br]< font color="#ff0000" size="6" face="arial" > [br]< %= server.mappath("\")% > [br]< /font >< /p > [br]2.我如何知道使用者所用的瀏覽器? [br]答:使用the request object方法 [br]strbrowser=request.servervariables("http_user_agent") [br]if instr(strbrowser,"msie") < > 0 then [br] response.redirect("formsieonly.htm") [br]else [br] response.redirect("forall.htm") [br]end if [br][br]3.如何計(jì)算每天的平均反復(fù)訪問人數(shù) [br]答:解決方法 [br]< % startdate=datediff("d",now,"01/01/1990") [br]if strdate< 0 then startdate=startdate*-1 [br]avgvpd=int((usercnt)/startdate) % > [br]顯示結(jié)果 [br]< % response.write(avgvpd) % > [br]that is it.this page have been viewed since november 10,1998 [br][br]4.如何顯示隨機(jī)圖象 [br]< % dim p,ppic,dpic [br]ppic=12 [br]randomize [br]p=int((ppic*rnd)+1) [br]dpic="graphix/randompics/"&p&".gif" [br]% > [br]顯示 [br]< img src="< %=dpic% >" > [br][br]5.如何回到先前的頁面 [br]答:< a href="< %=request.servervariables("http_referer")% >" >preivous page< /a > [br]或用圖片如:< img src="arrowback.gif" alt="< %=request.servervariables("http_referer")% >" > [br][br]6.如何確定對(duì)方的ip地址 [br]答:< %=request.servervariables("remote_addr)% > [br][br]7.如何鏈結(jié)到一副圖片上 [br]答:< % @languages=vbs cript % > [br]< % response.expires=0 [br]strimagename="graphix/errors/erroriamge.gif" [br]response.redirect(strimagename) [br]% > [br][br]8.強(qiáng)迫輸入密碼對(duì)話框 [br]答:把這句話放載頁面的開頭 [br]< % response.status="401 not authorized" [br]response.end [br]% > [br][br]9.如何傳遞變量從一頁到另一頁 [br]答:用 hidden 類型來傳遞變量 [br]< % form method="post" action="mynextpage.asp" > [br]< % for each item in request.form % > [br]< input namee="< %=item% >" type="hidden" [br]value="< %=server.htmlencode(request.form(item)) % >" > [br]< % next % > [br]< /form > [br][br]10.為何我在 asp 程序內(nèi)使用 msgbox,程序出錯(cuò)說沒有權(quán)限 [br]答:由于 asp 是服務(wù)器運(yùn)行的,如果可以在服務(wù)器顯示一個(gè)對(duì)話框,那么你只好等有人按了確定之后,你的程序才能繼續(xù)執(zhí)行,而一般服務(wù)器不會(huì)有人守著,所以微軟不得不禁止這個(gè)函數(shù),并胡亂告訴你 (:) 呵呵) 沒有權(quán)限。但是asp和客戶端腳本結(jié)合倒可以顯示一個(gè)對(duì)話框,as follows: [br]< % yourvar="測(cè)試對(duì)話框"% > [br]< % s cript language='javas cript' > [br]alert("< %=yourvar% >") [br]< /s cript > [br][br]11.有沒有辦法保護(hù)自己的源代碼,不給人看到 [br]答:可以去下載一個(gè)微軟的windows s cript encoder,它可以對(duì)asp的腳本和客戶端javas cript/vbs cript腳本進(jìn)行加密。。。不過客戶端加密后,只有ie5才能執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有s cript engine 5(裝一個(gè)ie5就有了)才能執(zhí)行。 [br][br]12.怎樣才能將 query string 從一個(gè) asp 文件傳送到另一個(gè)? [br]答:前者文件加入下句: response.redirect("second.asp?" & request.servervariables("query_string")) [br][br]13.global.asa文件總是不起作用? [br]答:只有web目錄設(shè)置為web application, global.asa才有效,并且一個(gè)web application的根目錄下 global.asa才有效。iis4可以使用internet service manager設(shè)置application setting 怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼? [br][br]14.怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼? [br]答:internet sevices manager - > 選擇default web site - >右鼠鍵- >菜單屬性-〉主目錄- > 應(yīng)用程序設(shè)置(application setting)- > 點(diǎn)擊按鈕 "配置"- > app mapping - >點(diǎn)擊按鈕"add" - > executable browse選擇 \winnt\system32\inetsrv\asp.dll extension 輸入 htm method exclusions 輸入put.delete 全部確定即可。但是值得注意的是這樣對(duì)htm也要由asp.dll處理,效率將降低。 [br][br]15.如何注冊(cè)組件 [br]答:有兩種方法。 [br]第一種方法:手工注冊(cè) dll 這種方法從iis 3.0一直使用到iis 4.0和其它的web server。它需要你在命令行方式下來執(zhí)行,進(jìn)入到包含有dll的目錄,并輸入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 aspemail.dll 它會(huì)把dll的特定信息注冊(cè)入服務(wù)器中的注冊(cè)表中。然后這個(gè)組件就可以在服務(wù)器上使用了,但是這個(gè)方法有一個(gè)缺陷。當(dāng)使用這種方法注冊(cè)完畢組件后,該組件必須要相應(yīng)的設(shè)置nt的匿名帳號(hào)有權(quán)限執(zhí)行這個(gè)dll。特別是一些組件需要讀取注冊(cè)表,所以,這個(gè)注冊(cè)組件的方法僅僅是使用在服務(wù)器上沒有mts的情況下,要取消注冊(cè)這個(gè)dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll [br][br]第二種方法:使用mts(microsoft transaction server) mts是iis 4新增特色,但是它提供了巨大的改進(jìn)。mts允許你指定只有有特權(quán)的用戶才能夠訪問組件,大大提高了網(wǎng)站服務(wù)器上的安全性設(shè)置。在mts上注冊(cè)組件的步驟如下: [br]1) 打開iis管理控制臺(tái)。 [br]2) 展開transaction server,右鍵單擊"pkgs installed"然后選擇"new package"。 [br]3) 單擊"create an empty package"。 [br]4) 給該包命名。 [br]5) 指定administrator帳號(hào)或則使用"interactive"(如果服務(wù)器經(jīng)常是使用administrator 登陸的話)。 [br]6) 現(xiàn)在使用右鍵單擊你剛建立的那個(gè)包下面展開后的"components"。選擇 "new then component"。 [br]7) 選擇 "install new component" 。 [br]8) 找到你的.dll文件然后選擇next到完成。 [br]要?jiǎng)h除這個(gè)對(duì)象,只要選擇它的圖標(biāo),然后選擇delete。 [br]附注:特別要注意第二種方法,它是用來調(diào)試自己編寫組件的最好方法,而不必每次都需要重新啟動(dòng)機(jī)器了。[br][br]16. asp與access數(shù)據(jù)庫連接: [br][br]<%@ language=vbs cript%> [br]<% [br]dim conn,mdbfile [br]mdbfile=server.mappath("數(shù)據(jù)庫名稱.mdb") [br]set conn=server.createobject("adodb.connection") [br]conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)據(jù)庫密碼;dbq="&mdbfile [br][br]%> [br][br]17. asp與sql數(shù)據(jù)庫連接: [br][br]<%@ language=vbs cript%> [br]<% [br]dim conn [br]set conn=server.createobject("adodb.connection") [br]con.open "provider=sqloledb;data source=sql服務(wù)器名稱或ip地址;uid=sa;pwd=數(shù)據(jù)庫密碼;database=數(shù)據(jù)庫名稱 [br]%> [br][br]建立記錄集對(duì)象: [br][br]set rs=server.createobject("adodb.recordset") [br]rs.open sql語句,conn,3,2 [br][br]18. sql常用命令使用方法: [br][br](1) 數(shù)據(jù)記錄篩選: [br][br]sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]" [br][br]sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]" [br][br]sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]" [br][br]sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')" [br][br]sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2" [br][br](2) 更新數(shù)據(jù)記錄: [br][br]sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式" [br][br]sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式" [br][br](3) 刪除數(shù)據(jù)記錄: [br][br]sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式" [br][br]sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除) [br][br](4) 添加數(shù)據(jù)記錄: [br][br]sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" [br][br]sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表) [br][br](5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù): [br][br]avg(字段名) 得出一個(gè)表格欄平均值 [br]count(*|字段名) 對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì) [br]max(字段名) 取得一個(gè)表格欄最大的值 [br]min(字段名) 取得一個(gè)表格欄最小的值 [br]sum(字段名) 把數(shù)據(jù)欄的值相加 [br][br]引用以上函數(shù)的方法: [br][br]sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式" [br]set rs=conn.excute(sql) [br][br]用 rs("別名") 獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。 [br][br](5) 數(shù)據(jù)表的建立和刪除: [br][br]create table 數(shù)據(jù)表名稱(字段1 類型1(長(zhǎng)度),字段2 類型2(長(zhǎng)度) …… ) [br][br]例:create table tab01(name varchar(50),datetime default now()) [br][br]drop table 數(shù)據(jù)表名稱 (永久性刪除一個(gè)數(shù)據(jù)表) [br][br]19. 記錄集對(duì)象的方法: [br][br]rs.movenext 將記錄指針從當(dāng)前的位置向下移一行 [br]rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行 [br]rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行 [br]rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行 [br]rs.absoluteposition=n 將記錄指針移到數(shù)據(jù)表第n行 [br]rs.absolutepage=n 將記錄指針移到第n頁的第一行 [br]rs.pagesize=n 設(shè)置每頁為n條記錄 [br]rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù) [br]rs.recordcount 返回記錄總數(shù) [br]rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否 [br]rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否 [br]rs.delete 刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng) [br]rs.addnew 添加記錄到數(shù)據(jù)表末端 [br]rs.update 更新數(shù)據(jù)表記錄 [br][br]--------------------------------------- [br][br]20 recordset對(duì)象方法 [br][br]open方法 [br][br]recordset.open source,activeconnection,cursortype,locktype,options [br][br]source [br]recordset對(duì)象可以通過source屬性來連接command對(duì)象。source參數(shù)可以是一個(gè)command對(duì)象名稱、一段sql命令、一個(gè)指定的數(shù)據(jù)表名稱或是一個(gè)stored procedure。假如省略這個(gè)參數(shù),系統(tǒng)則采用recordset對(duì)象的source屬性。 [br][br]activeconnection [br]recordset對(duì)象可以通過activeconnection屬性來連接connection對(duì)象。這里的activeconnection可以是一個(gè)connection對(duì)象或是一串包含數(shù)據(jù)庫連接信息(connectionstring)的字符串參數(shù)。 [br][br]cursortype [br]recordset對(duì)象open方法的cursortype參數(shù)表示將以什么樣的游標(biāo)類型啟動(dòng)數(shù)據(jù),包括adopenforwardonly、adopenkeyset、adopendynamic及adopenstatic,分述如下: [br]-------------------------------------------------------------- [br]常數(shù) 常數(shù)值 說明 [br]------------------------------------------------------------- [br]adopenforwardonly 0 缺省值,啟動(dòng)一個(gè)只能向前移動(dòng)的游標(biāo)(forward only)。 [br]adopenkeyset 1 啟動(dòng)一個(gè)keyset類型的游標(biāo)。 [br]adopendynamic 2 啟動(dòng)一個(gè)dynamic類型的游標(biāo)。 [br]adopenstatic 3 啟動(dòng)一個(gè)static類型的游標(biāo)。 [br]------------------------------------------------------------- [br]以上幾個(gè)游標(biāo)類型將直接影響到recordset對(duì)象所有的屬性和方法,以下列表說明他們之間的區(qū)別。 [br][br]------------------------------------------------------------- [br]recordset屬性 adopenforwardonly adopenkeyset adopendynamic adopenstatic [br]------------------------------------------------------------- [br]absolutepage 不支持 不支持 可讀寫 可讀寫 [br]absoluteposition 不支持 不支持 可讀寫 可讀寫 [br]activeconnection 可讀寫 可讀寫 可讀寫 可讀寫 [br]bof 只讀 只讀 只讀 只讀 [br]bookmark 不支持 不支持 可讀寫 可讀寫 [br]cachesize 可讀寫 可讀寫 可讀寫 可讀寫 [br]cursorlocation 可讀寫 可讀寫 可讀寫 可讀寫 [br]cursortype 可讀寫 可讀寫 可讀寫 可讀寫 [br]editmode 只讀 只讀 只讀 只讀 [br]eof 只讀 只讀 只讀 只讀 [br]filter 可讀寫 可讀寫 可讀寫 可讀寫 [br]locktype 可讀寫 可讀寫 可讀寫 可讀寫 [br]marshaloptions 可讀寫 可讀寫 可讀寫 可讀寫 [br]maxrecords 可讀寫 可讀寫 可讀寫 可讀寫 [br]pagecount 不支持 不支持 只讀 只讀 [br]pagesize 可讀寫 可讀寫 可讀寫 可讀寫 [br]recordcount 不支持 不支持 只讀 只讀 [br]source 可讀寫 可讀寫 可讀寫 可讀寫 [br]state 只讀 只讀 只讀 只讀 [br]status 只讀 只讀 只讀 只讀 [br]addnew 支持 支持 支持 支持 [br]cancelbatch 支持 支持 支持 支持 [br]cancelupdate 支持 支持 支持 支持 [br]clone 不支持 不支持 [br]close 支持 支持 支持 支持 [br]delete 支持 支持 支持 支持 [br]getrows 支持 支持 支持 支持 [br]move 不支持 支持 支持 支持 [br]movefirst 支持 支持 支持 支持 [br]movelast 不支持 支持 支持 支持 [br]movenext 支持 支持 支持 支持 [br]moveprevious 不支持 支持 支持 支持 [br]nextrecordset 支持 支持 支持 支持 [br]open 支持 支持 支持 支持 [br]requery 支持 支持 支持 支持 [br]resync 不支持 不支持 支持 支持 [br]supports 支持 支持 支持 支持 [br]update 支持 支持 支持 支持 [br]updatebatch 支持 支持 支持 支持 [br]-------------------------------------------------------------- [br]其中nextrecordset方法并不適用于microsoft access數(shù)據(jù)庫。 [br][br]locktype [br]recordset對(duì)象open方法的locktype參數(shù)表示要采用的lock類型,如果忽略這個(gè)參數(shù),那么系統(tǒng)會(huì)以recordset對(duì)象的locktype屬性為預(yù)設(shè)值。locktype參數(shù)包含adlockreadonly、adlockprssimistic、adlockoptimistic及adlockbatchoptimistic等,分述如下: [br][br]------------------------------------------------------------- [br]常數(shù) 常數(shù)值 說明 [br]-------------------------------------------------------------- [br]adlockreadonly 1 缺省值,recordset對(duì)象以只讀方式啟動(dòng),無法運(yùn)行addnew、update及delete等方法 [br]adlockprssimistic 2 當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)會(huì)暫時(shí)鎖住其他用戶的動(dòng)作,以保持?jǐn)?shù)據(jù)一致性。 [br]adlockoptimistic 3 當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)并不會(huì)鎖住其他用戶的動(dòng)作,其他用戶可以對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。 [br]adlockbatchoptimistic 4 當(dāng)數(shù)據(jù)源正在更新時(shí),其他用戶必須將cursorlocation屬性改為adudeclientbatch才能對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。
該文章在 2010/7/3 13:29:06 編輯過 |
相關(guān)文章
正在查詢... |