当前位置导航:炫浪网>>网络学院>>网页制作>>ASP教程

在ASP中用集合成批操作数据库

一、HTML的集合属性
  
  首先,让我们来熟悉一下HTML的集合属性。在表单(FORM)数据或查询(Query)参数中,当提交的多个参数采用同一个名称时,这些参数值将构成一个集合,在ASP页面可以获取这些参数值或同名参数的个数。如在下面的页面(Set.HTM)中,6个复选框采用同一个参数名MyCheckBox,其值分别为1、2、3、4、5、6。
  
  <!-- Set.HTM -->
  <html><head><title>集合属性应用</title></head><body>
  <p>请选择要操作的项目,提交数据后,将会显示您选择的项目。
  <form method="POST" action="set.asp">
  <br>1、<input type="checkbox" name="MyCheckBox" value="1">
  <br>2、<input type="checkbox" name="MyCheckBox" value="2">
  <br>3、<input type="checkbox" name="MyCheckBox" value="3">
  <br>4、<input type="checkbox" name="MyCheckBox" value="4">
  <br>5、<input type="checkbox" name="MyCheckBox" value="5">
  <br>6、<input type="checkbox" name="MyCheckBox" value="6">
  <br><input type="submit" value="提交数据" name="B1">
  </form></body></html>
  
  当客户端选择了要显示的项目后,下面的ASP页面(Set.ASP)给出客户端选择的项目个数及其值。
  
  <!-- Set.ASP -->
  <%@ LANGUAGE = VBScript %>
  <html><head><title>集合操作测试</title></head>
  <body>
  <%
  Response.Write "<br>您一共选择了"&request("MyCheckBox").count&"项,"
  Response.Write "<br>您选择的项目有:"&request("MyCheckBox")
  %>
  </body></html>
  
  如当客户端选择了第二、三、五项并提交数据后,将会看到如下结果:
  
  您一共选择了3项,
  
  您选择的项目有:2, 3, 5
  
  应该注意到,“2, 3, 5”的形式与SQL语句要求的形式是一致的,我们可以直接或间接地利用这种形式的结果,如 "Select * from ATable where AFiled in(" & request("MyCheckBox") & ")"的实际
  
  SQL查询语句为“Select * from ATable where AFiled in(2, 3, 5)”。
  
  二、HTML的集合属性的应用
  
  下面我们结合一个实际的例子,讨论一下如何在ASP页面中利用HTML的集合属性来成批操作数据库。现在我们有一个记录客户电子信箱的ACCESS数据库EMail,其中有一个数据表EmailList,包含CustomerId、CustomerName、CustomerEmail三个字段,分别表示客户编号、客户名称、客户电子信箱。在ASP页面SelectId.ASP中,我们采用CheckBox列出所有客户的客户名称(各个CheckBox的值为对应的客户编号),让用户选择给哪些客户发送电子邮件。当用户选择了客户并提交数据后,SendMail.ASP将检索到这些客户的电子信箱,并给这些客户发送电子邮件。具体的信息请参见下面ASP程序代码和注释信息。
  
  <!-- SelectId.ASP:列出所有客户的客户名称 -->
  <html><head><title>所有客户的客户名称</title></head><body>
  <p align=center><font style="font-family:宋体;font-size:9pt">
  请选择要给哪些客户发送“新年问候”的电子邮件
  <form method="POST" action="SendMail.asp">
  <%'建立与ACCESS数据库的连接
  Set dbConnection = Server.CreateObject("ADODB.Connection")
  dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
  "DBQ=C:\inetpub\wwwroot\test\Email.mdb"
  '获取所有客户的客户编号、客户名称
  Set rsCustomers = Server.CreateObject("ADODB.RecordSet")
  rsCustomers.Open "Select CustomerId,CustomerName,CustomerEmail From EmailList",_
  dbConnection,1,3,1
  '显示所有客户的客户名称
  while not rsCustomers.eof
  %>
  <br><input type="checkbox" name="CustomerId" value="<%=rsCustomers("CustomerId")%>">
  <a href="mailto:<%=rsCustomers("CustomerEmail")%>">
  <%=rsCustomers("CustomerName")%></a>
  <%rsCustomers.MoveNext
  wend
  rsCustomers.close
  set rsCustomers = nothing
  dbConnection.close
  set dbConnection = nothing
  %>
  <br><input type="submit" value="给客户发送电子邮件" name="B1"
  style="font-family:宋体;font-size:9pt">
  </form></body></html>
  
  <!-- SendMail.ASP:给所选择客户发电子邮件 -->
  <html><head><title>给所选择客户发电子邮件</title></head><body>
  <p align=center><font style="font-family:宋体;font-size:9pt">
  正在给下面客户发送电子邮件
  <%'建立与ACCESS数据库的连接
  Set dbConnection = Server.CreateObject("ADODB.Connection")
  dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
  "DBQ=C:\inetpub\wwwroot\test\Email.mdb"
  '获取所选择客户的电子信箱
  Set rsCustomers = Server.CreateObject("ADODB.RecordSet")
  rsCustomers.Open "Select CustomerName,CustomerEmail From EmailList where CustomerId in ("&_
  Request("CustomerId")&")",dbConnection,1,3,1
  while not rsCustomers.eof
  '给一个客户发电子邮件
  Set myMail = CreateObject("CDONTS.NewMail")
  myMail.From = "[email protected]"
  myMail.value("Reply-To") = "[email protected]"
  myMail.To = rsCustomers("CustomerEmail")
  myMail.Subject = "来自王发军的新年问候"
  myMail.BodyFormat = 1
  myMail.MailFormat = 1
  myMail.Body = "王发军向"&rsCustomers("CustomerName")&"问好!"
  myMail.Send
  Set myMail = Nothing
  %>
  <br>给<a href="mailto:<%=rsCustomers("CustomerEmail")%>"><%=rsCustomers("CustomerName")%></a>
  发送电子邮件成功!
  <%
  rsCustomers.MoveNext
  wend
  rsCustomers.close
  set rsCustomers = nothing
  dbConnection.close
  set dbConnection = nothing
  %>
  <br>在所选择的客户发送电子邮件完毕!
  </body></html>
  
  列出你的所有Session变量
  
  <%@ Language=VBScript %>
  <% Option Explicit %>
  <%
  Response.Write "在你的程序中一共使用了 " & Session.Contents.Count & _
  " 个Session变量<P>"
  Dim strName, iLoop
  For Each strName in Session.Contents
  '判断一个Session变量是否为数组
  If IsArray(Session(strName)) then
  '如果是数组,那么罗列出所有的数组元素内容
  For iLoop = LBound(Session(strName)) to UBound(Session(strName))
  Response.Write strName & "(" & iLoop & ") - " & _
  Session(strName)(iLoop) & "<BR>"
  Next
  Else
  '如果不是数组,那么直接显示
  Response.Write strName & " - " & Session.Contents(strName) & "<BR>"
  End If
  Next
  %>
相关内容
赞助商链接