- 1. 都市賽車6 (Asphalt 6)for Android v3.1.6 最...
- 2. 免費ASP論壇程序Web Wiz Forums v9.71 英文版
- 3. 0323版 (卡巴斯基反病毒)病毒庫 Kaspersky Anti-Vi...
- 4. 混淆代碼從而保護知識產(chǎn)權ASP混天綾 V 0.96
- 5. 精通ASP.NET網(wǎng)絡編程 電子書
- 6. 卡巴斯基(Kaspersky)2009 KAV v8.0.0.506 Final 官...
- 7. ASP代碼加密工具 10.0 英文版 Build 008
- 8. ASP代碼加密工具 10.0 中文旗艦版
- 9. 深度學習文章管理系統(tǒng)(自動生成asp代碼) V0.05綠色...
- 10. 輕松學會ASP V1.0 綠色中文版
ASP開發(fā)的三個技巧
本文提供給大家分享的是在ASP開發(fā)中的三個技巧,希望能對大家派上用場。
一、 服務器端文件的動態(tài)包含(注一)
在ASP開發(fā)過程中,我們經(jīng)常會將通用的函數(shù)制作成一個獨立的ASP文件,然后通過Include方法引入需要的頁面。由于在執(zhí)行過程中,服務器會首先運行采用Include方法包含的文件,然后才是當前頁面的代碼,所以,在實際執(zhí)行過程中我們不可能使用Include方法來實現(xiàn)服務器端的動態(tài)包含。
看下面一段代碼:
<%
i=1
str = "file" & i & "/a.asp"
%>
<!--#include virtual ="<% str %>"-->
我們的本意是希望根據(jù)I的不同取值,包含不同目錄下的同名文件,可是在執(zhí)行過程中,卻會返回“找不到包含文件 '<% str %>'。”的錯誤。也就是說在ASP中,我們不可能使用Include方法實現(xiàn)文件的動態(tài)包含。
要在ASP中實現(xiàn)真正的動態(tài)文件包含,目前可行的方法是使用Server.Execute命令。Server.Execute是ASP3.0新增的一個控制程序流的新方法,可以在運行過程中臨時轉移到一個文件、執(zhí)行其內(nèi)容,然后再返回原先的程序。
使用Server.Execute命令重新書寫的代碼如下:
<%
i=1
str = "file" & i & "/a.asp"
Server.Execute str
%>
注一:本文討論的文件動態(tài)包含,主要指包含文件為變量的情況,有別于被包含的文件名事先確定的情況。
二、 數(shù)據(jù)庫記錄的批量刪除
在用ASP開發(fā)管理程序中,會不可避免地涉及刪除數(shù)據(jù)庫記錄的操作。一般我們會采用下面兩種方法刪除記錄:使用Recordset.Delete方法或者直接使用SQL語句“Delete from 數(shù)據(jù)表 Where 主鍵=值”。而本文將要介紹的這種方法則可以同時刪除一條或多條記錄。下面我們首先來看一個具體的例子,在這個例子中我們會用到一張數(shù)據(jù)表(Subject)和兩個ASP文件(list.asp和code.asp),該數(shù)據(jù)表包含了兩個字段:
ID、數(shù)據(jù)表主鍵,用來唯一標示數(shù)據(jù)庫中的記錄;
Title:標題,用來顯示記錄的內(nèi)容。
兩個ASP文件的內(nèi)容如下:
list.asp
<%@ Language=VBScript %>
<%
'創(chuàng)建數(shù)據(jù)庫連接
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>標題</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>"
‘關閉ADO對象
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
code.asp
<%@ Language=VBScript %>
<%
'獲取刪除的記錄列表
Dim strDeleteList
strDeleteList = Request.Form ("Delete")
'創(chuàng)建一個連接對象
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Samples\Tooltips.mdb"
'生成刪除記錄的SQL語句
Dim strSQL
strSQL = "DELETE FROM Subject WHERE ID IN (" & strDeleteList & ")"
‘執(zhí)行刪除操作
objConn.Execute strSQL
'關閉連接對象
objConn.Close
Set objConn = Nothing
%>
從上面的代碼可以看到,我們首先在list.asp頁面中生成一個記錄列表,每條記錄前面都包含了一個Checkbox,這些CheckBox都使用了同一個名稱,每個CheckBox的取值對應數(shù)據(jù)表中的唯一記錄,由于在ASP中,如果一個表單上包含多個相同命名的控件,會返回一個以“,”分隔的字符串,所以,在Code.asp文件中,我們首先取得所有Checkbox對應的取值,然后利用一個SQL語句“Delete from subject where id in (str)”完成記錄的刪除。其中的關鍵就在于“DELETE FROM TableNameWHERE TableID IN (String)”這個SQL語句。