相關(guān)資訊
- 《戰(zhàn)國(guó)無(wú)雙4-2》怎么換服裝?戰(zhàn)國(guó)無(wú)
- 關(guān)于責(zé)任的名言警句大全
- 《戰(zhàn)國(guó)無(wú)雙4-2》PC版如何聯(lián)機(jī)? 戰(zhàn)
- 戰(zhàn)國(guó)無(wú)雙4-2技能覺(jué)醒牛逼嗎 全新
- 《戰(zhàn)國(guó)無(wú)雙4-2》手柄無(wú)效怎么解決
- 戰(zhàn)國(guó)無(wú)雙4-2如何設(shè)置語(yǔ)言 戰(zhàn)國(guó)無(wú)雙
- 戰(zhàn)國(guó)無(wú)雙4-2怎么樣跳過(guò)進(jìn)入開(kāi)場(chǎng)動(dòng)畫
- 什么是應(yīng)屆生畢業(yè)生
- 應(yīng)屆生簡(jiǎn)歷自我評(píng)價(jià)
- 應(yīng)屆生簡(jiǎn)歷怎么寫
本類常用軟件
-
福建農(nóng)村信用社手機(jī)銀行客戶端下載下載量:584204
-
Windows優(yōu)化大師下載量:416896
-
90美女秀(視頻聊天軟件)下載量:366961
-
廣西農(nóng)村信用社手機(jī)銀行客戶端下載下載量:365699
-
快播手機(jī)版下載量:325855
本文提供給大家分享的是在ASP開(kāi)發(fā)中的三個(gè)技巧,希望能對(duì)大家派上用場(chǎng)。
一、 服務(wù)器端文件的動(dòng)態(tài)包含(注一)
在ASP開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)將通用的函數(shù)制作成一個(gè)獨(dú)立的asp文件,然后通過(guò)Include方法引入需要的頁(yè)面。由于在執(zhí)行過(guò)程中,服務(wù)器會(huì)首先運(yùn)行采用Include方法包含的文件,然后才是當(dāng)前頁(yè)面的代碼,所以,在實(shí)際執(zhí)行過(guò)程中我們不可能使用Include方法來(lái)實(shí)現(xiàn)服務(wù)器端的動(dòng)態(tài)包含。
看下面一段代碼:
<%
i=1
str = "file" & i & "/a.asp"
%>
<!--#include virtual ="<% str %>"-->
我們的本意是希望根據(jù)I的不同取值,包含不同目錄下的同名文件,可是在執(zhí)行過(guò)程中,卻會(huì)返回“找不到包含文件 '<% str %>'。”的錯(cuò)誤。也就是說(shuō)在ASP中,我們不可能使用Include方法實(shí)現(xiàn)文件的動(dòng)態(tài)包含。
要在ASP中實(shí)現(xiàn)真正的動(dòng)態(tài)文件包含,目前可行的方法是使用Server.Execute命令。Server.Execute是ASP3.0新增的一個(gè)控制程序流的新方法,可以在運(yùn)行過(guò)程中臨時(shí)轉(zhuǎn)移到一個(gè)文件、執(zhí)行其內(nèi)容,然后再返回原先的程序。
使用Server.Execute命令重新書寫的代碼如下:
<%
i=1
str = "file" & i & "/a.asp"
Server.Execute str
%>
注一:本文討論的文件動(dòng)態(tài)包含,主要指包含文件為變量的情況,有別于被包含的文件名事先確定的情況。
二、 數(shù)據(jù)庫(kù)記錄的批量刪除
在用ASP開(kāi)發(fā)管理程序中,會(huì)不可避免地涉及刪除數(shù)據(jù)庫(kù)記錄的操作。一般我們會(huì)采用下面兩種方法刪除記錄:使用Recordset.Delete方法或者直接使用SQL語(yǔ)句“Delete from 數(shù)據(jù)表 Where 主鍵=值”。而本文將要介紹的這種方法則可以同時(shí)刪除一條或多條記錄。下面我們首先來(lái)看一個(gè)具體的例子,在這個(gè)例子中我們會(huì)用到一張數(shù)據(jù)表(Subject)和兩個(gè)ASP文件(list.asp和code.asp),該數(shù)據(jù)表包含了兩個(gè)字段:
ID、數(shù)據(jù)表主鍵,用來(lái)唯一標(biāo)示數(shù)據(jù)庫(kù)中的記錄;
Title:標(biāo)題,用來(lái)顯示記錄的內(nèi)容。
兩個(gè)ASP文件的內(nèi)容如下:
list.asp
<%@ Language=VBScript %>
<%
'創(chuàng)建數(shù)據(jù)庫(kù)連接
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open"Provider=microsoft.Jet.OLEDB.4.0;Data Source=D:\Samples\Tooltips.mdb"
'創(chuàng)建記錄集
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "Subject", objConn
'顯示記錄列表
Response.Write "<FORM METHOD=POST ACTION=""Code.asp"">"
Response.Write "<TABLE BORDER=1 CELLSPACING=1>"
Response.Write "<TR>"
Response.Write "<TH>刪除</TH>"
Response.Write "<TH>標(biāo)題</TH>"
Response.Write "</TR>"
Do While Not objRS.EOF
Response.Write "<TR>"
Response.Write "<TD><INPUT TYPE=CHECKBOX NAME=Delete "
Response.Write "VALUE=" & CInt(objRS("ID")) & "></TD>"
Response.Write "<TD>" & objRS("Title") & "</TD>"
Response.Write "</TD></TR>"
objRS.MoveNext
Loop
Response.Write "</TABLE>"
Response.Write "<P><INPUT TYPE=SUBMIT VALUE=""刪除"">"
Response.Write "</FORM>"
‘關(guān)閉ADO對(duì)象
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
code.asp
<%@ Language=VBScript %>
<%
'獲取刪除的記錄列表
Dim strDeleteList
strDeleteList = Request.Form ("Delete")
'創(chuàng)建一個(gè)連接對(duì)象
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Samples\Tooltips.mdb"
'生成刪除記錄的SQL語(yǔ)句
Dim strSQL
strSQL = "DELETE FROM Subject WHERE ID IN (" & strDeleteList & ")"
‘執(zhí)行刪除操作
objConn.Execute strSQL
'關(guān)閉連接對(duì)象
objConn.Close
Set objConn = Nothing
%>
從上面的代碼可以看到,我們首先在list.asp頁(yè)面中生成一個(gè)記錄列表,每條記錄前面都包含了一個(gè)Checkbox,這些CheckBox都使用了同一個(gè)名稱,每個(gè)CheckBox的取值對(duì)應(yīng)數(shù)據(jù)表中的唯一記錄,由于在ASP中,如果一個(gè)表單上包含多個(gè)相同命名的控件,會(huì)返回一個(gè)以“,”分隔的字符串,所以,在Code.asp文件中,我們首先取得所有Checkbox對(duì)應(yīng)的取值,然后利用一個(gè)SQL語(yǔ)句“Delete from subject where id in (str)”完成記錄的刪除。其中的關(guān)鍵就在于“DELETE FROM TableNameWHERE TableID IN (String)”這個(gè)SQL語(yǔ)句。由于該SQL語(yǔ)句對(duì)于string沒(méi)有特殊的要求,所以我們既可以刪除一條記錄,也可以同時(shí)刪除多條記錄。
這里還需要說(shuō)明一點(diǎn),如果數(shù)據(jù)表中作為的字段類型為字符型,則需要按下面的形式進(jìn)行修改
……
strDeleteList = Replace(strDeleteList,”,”,”’,’”)
strSQL = "DELETE FROM Subject WHERE ID IN (‘" & strDeleteList & "’)"
……
三、 用MetaDATA標(biāo)記包含外部常量
如果我們要在ASP程序中使用ADO事先定義的常量,那么必須在每個(gè)用到ADO常量的頁(yè)面上包含“adovbs.inc”,否則就只能直接用數(shù)字表示。顯然,直接數(shù)字并不利于今后程序的修改,而且可以規(guī)范化開(kāi)發(fā)需要極力避免的事情,但是每個(gè)頁(yè)面都包含“adovbs.inc”,又煩瑣了一點(diǎn)。所以,下面介紹另外一種一次包含的方法。這就是Global.asa中的TypeLibrary Declarations。
由于一般的COM對(duì)象都會(huì)將常量定義包含在類型庫(kù)中,所以利用TypeLibrary Declarations可以直接讀取這些類型庫(kù)中定義好的常量。加上TypeLibrary Declarations只要在Global.asa中一次定義就可以在所有的ASP頁(yè)面中使用,效率明顯高于單個(gè)頁(yè)面包含。
TypeLibrary Declarations的語(yǔ)法形式為:
<!--METADATA
TYPE="TypeLib"
FILE="file"
UUID="typelibraryuuid"
-->
其中,F(xiàn)ile和UUID兩個(gè)屬性只要任選一個(gè)即可。File屬性指指向包含常量定義的完整文件路徑,而UUID則指外部庫(kù)的GUID。
例如我們包含在ASP程序中使用ADO常量,則可以采用下面兩種方式:
<!—MetaDATA
Type =”TypeLib”
File = “C:\Program Files\Common Files\SYSTEM\ADO\msado21.tlb”
-->
或者
<!—MetaDATA
Type =”TypeLib”
UUID = “00000201-0000-0010-8000-00AA006D2EA4”
-->
相信大家看了上面兩種方法,會(huì)很自然的選擇第一種。的確,利用物理目錄的方式明顯比后一種方法方便,但是如果開(kāi)發(fā)的ASP程序需要到其它機(jī)器上安裝,那么采用第二種方法會(huì)更好一點(diǎn)。為了方便大家,下面列出了ASP中一些常用的GUID
名稱
GUID
ADO2.1
{00000201-0000-0010-8000-00AA006D2EA4}
ADO2.5
{00000205-0000-0010-8000-00AA006D2EA4}
ADO2.6
{00000206-0000-0010-8000-00AA006D2EA4}
ADO2.7
{00000300-0000-0010-8000-00AA006D2EA4}
FileSystemObject
{420B2830-E718-11CF-893D-00A0C9054228}