二、 資料庫記錄的大量刪除
在用ASP開發管理程式中,會不可避免地涉及刪除資料庫記錄的操作。一般我們會採用下面兩種方法刪除記錄:使用Recordset.Delete方法或者直接使用SQL語句“Delete from 資料表 Where 主鍵=值”。而本文將要介紹的這種方法則可以同時刪除一條或多條記錄。下面我們首先來看一個具體的例子,在這個例子中我們會用到一張資料表(Subject)和兩個ASP檔案(list.asp和code.asp),該資料表包含了兩個欄位:
ID、資料表主鍵,用來唯一標示資料庫中的記錄;
Title:標題,用來顯示記錄的內容。
兩個ASP檔案的內容如下:
list.asp
<%@ Language=VBScript %>
<%
'建立資料庫連接
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Samples\Tooltips.mdb"
'建立記錄集
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "Subject", objConn
'擷取刪除的記錄列表
Dim strDeleteList
strDeleteList = Request.Form ("Delete")
'建立一個連線物件
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 & ")"
‘執行刪除操作
objConn.Execute strSQL
'關閉連線物件
objConn.Close
Set objConn = Nothing
%>
從上面的代碼可以看到,我們首先在list.asp頁面中產生一個記錄列表,每條記錄前面都包含了一個Checkbox,這些CheckBox都使用了同一個名稱,每個CheckBox的取值對應資料表中的唯一記錄,由於在ASP中,如果一個表單上包含多個相同命名的控制項,會返回一個以“,”分隔的字串,所以,在Code.asp檔案中,我們首先取得所有Checkbox對應的取值,然後利用一個SQL語句“Delete from subject where id in (str)”完成記錄的刪除。其中的關鍵就在於“DELETE FROM TableNameWHERE TableID IN (String)”這個SQL語句。由於該SQL語句對於string沒有特殊的要求,所以我們既可以刪除一條記錄,也可以同時刪除多條記錄。
這裡還需要說明一點,如果資料表中作為的欄位類型為字元型,則需要按下面的形式進行修改
……
strDeleteList = Replace(strDeleteList,”,”,”’,’”)
strSQL = "DELETE FROM Subject WHERE ID IN (‘" & strDeleteList & "’)"
……