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

我们知道,一般的关系数据库(如SQL Server、Oracle、Access等)中的查询操作是支持集合操作的,
例如可以用“Update ATable Set Field1 = AValue where Field2 in
(Value21,Value22)”来完成对数据
库的成批更新操作。我们可以充分利用数据库的这种集合特性来提高ASP页面操作数据库的效率。如我们
可以在页面上列出多个记录,让用户选择要操作的记录,然后在用户确定操作后进行成批操作,这与一个记
录操作一次的方法相比效率明显要高的多了。

一、HTML的集合属性
  首先,让我们来熟悉一下HTML的集合属性。在表单(FORM)数据或查询
(Query)参数中,当
提交的多个参数采用同一个名称时,这些参数值将构成一个集合,在ASP页面可以获取这些参数值或
同名参数的个数。如在下面的页面(Set.HTM)中,6个复选框采用同一个参数名MyCheckBox,其值分别
为1、2、3、4、5、6。
<!-- Set.HTM --&gt

集合属性应用

请选择要操作的项目,提交数据后,将会显示您选择的项目。


 
1、
 
2、
 
3、
 
4、
 
5、
 
6、
 


  当客户端选择了要显示的项目后,下面的ASP页面(Set.ASP)给出客户端选择的项目个数及其值。
<!-- Set.ASP --&gt

集合操作测试

Response.Write "
您一共选择了"&request("MyCheckBox").count&"项,"
Response.Write "
您选择的项目有:"&request("MyCheckBox")
%>

如当客户端选择了第二、三、五项并提交数据后,将会看到如下结果:
您一共选择了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:列出所有客户的客户名称 --&gt

所有客户的客户名称


请选择要给哪些客户发送“新年问候”的电子邮件

Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
"DBQ=C:inetpubwwwroot estEmail.mdb"
'获取所有客户的客户编号、客户名称
Set rsCustomers = Server.CreateObject("ADODB.RecordSet")
rsCustomers.Open "Select CustomerId,CustomerName,CustomerEmail From
EmailList",_
        dbConnection,1,3,1
'显示所有客户的客户名称
while not rsCustomers.eof
%>

">
">

wend
rsCustomers.close
set rsCustomers = nothing
dbConnection.close
set dbConnection = nothing
%>

style="font-family:宋体;font-size:9pt">

<!-- SendMail.ASP:给所选择客户发电子邮件 --&gt

给所选择客户发电子邮件


正在给下面客户发送电子邮件
Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
"DBQ=C:inetpubwwwroot estEmail.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 = "sales@test.com"
myMail.value("Reply-To") = "sales@test.com"
myMail.To = rsCustomers("CustomerEmail")
myMail.Subject = "来自王发军的新年问候"
myMail.BodyFormat = 1
myMail.MailFormat = 1 
myMail.Body = "王发军向"&rsCustomers("CustomerName")&"问好!"
myMail.Send
Set myMail = Nothing
%>

">=rsCustomers("CustomerName")%>
发送电子邮件成功!
rsCustomers.MoveNext
wend
rsCustomers.close
set rsCustomers = nothing
dbConnection.close
set dbConnection = nothing
%>

在所选择的客户发送电子邮件完毕!

以上程序在WINNT4.0+IIS4.0+ASP2.0+Access97下调试通过。 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124469/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-124469/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值