惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

博客园 - 留不住的时光

怎样才能将XML文件导入SQL Server 2000? ERP系统模块完全解析──物料编码分章(二) ERP系统模块完全解析──主生产计划MPS MS Project 2003 安装手记 Asp中一些FSO方面的函数 我为Delphi着迷——Danny Thorpe访谈录 (转贴) 企业的含义 ERP系统模块完全解析──工作中心 『数据库系统概论』学习笔记之七 ERP中MRP运算基本名词解析 如何使MSSQL的日志文件不再增大? ERP系统模块完全解析──物料编码分章(一) 《发布专题》发布我的WEB ERP预览 SQL语言高级技法演练 ERP系统模块完全解析──BOM分章 ADO.net 中数据库连接方式 文 档 编 制 步 骤 『数据库系统概论』学习笔记之六 汉字编码知识了解
[旧瓶装新酒]XML在ASP中的应用
留不住的时光 · 2005-05-06 · via 博客园 - 留不住的时光

       

首先:不要问我为何还要用ASP来解释,也不要问我为何不用ASP.NET。因为我这里只讨论ASP+XML。虽然ASP已经被ASP.NET所代替,但我仍然为ASP的简单易用、功能强大而着迷,也许是我比较笨吧。:)  

        好了,闲话少说,进入正题了。

一、 为何会选择用XML? 
        不知大家有没有这样的体会,无论用什么工具,与数据库打交道速度始终是一个问题,特别是涉及到多个表的复杂查询,就算你用存储过程,第一次执行的速度也是非常之慢的。而存储过程返回的数据集,又与普通的RecordSet有很大的区别,不支持光标、不支持分页、不支持记录集统计…。而假设我一定要用XML,也一定要对返回的结果再进行分页、查询、并存储起来多次利用,怎么办?解决方法:1、可以在数据库中建立表保存查询结果集;2、换个思路,用文件的形式储存查询结果集。第一种方法,我想绝大多数的人不会选。第二种方式,简单、直接,且被ADO支持,特别是使用XML文件格式保存,使用方法更与和数据库交互没有什么两样。

二、 如何使用XML? 
        假设在ASP程序中已经能正确调用数据库存储过程,接下来该如何做?
1、 按行返回存储过程结果集
Set CmdSP = Server.CreateObject(“AdoDb.Command”)
CmdSP.Commandtype = adCmdStoredProc
……
‘其它参数
Set Rs = CmdSP.Execute

2、 存储为XML文件
(1)、设计文件名:要使工作自动化,当然文件名也需要自动化,目的是要使相同查询条件的存储过程只执行一次,以便让查询结果给N个人N多次反复使用。为了能重复利用,通过连接N个参数(条件)作为文件名来判断是否执行过同等条件的存储过程。

(2)、在保存为文件之前先判断文件是否存在,如果存在就不执行存储过程并且不保存为文件,而直接使用先前已存储的XML文件,除非指定了重新生成查询文件的条件。
Function IsFileExists(sfilename)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   If (fso.FileExists(sfilename)) Then
      IsFileExists=true
   Else
      IsFileExists=false
   End If
   set fso=nothing
End Function
if IsFileExists(sFileName) = False then
 call openCmdSP ‘打开存储过程

 Rs.Save sFileName ,adPersistXML
 Rs.close
 Set rs = nothing
end if

3、 使用持久XML文件来重新建立 Recordset 对象

Set Rs = Server.CreateObject("AdoDB.RecordSet")
rs.open sFileName,conn, 1, 1,adCmdFile  
        注意参数adCmdFile,如果open 中的source为文件路径的话,就一定要加adCmdFile,否则会出错

4、 使用重新建立的Recordset对象 
        用Rs.Open source,adCursorType, adLockType, cmdFile形式打开持久XML文件建立的Recordset对象,与普通recordset对象的使用并无什么不同。如:
分页:
rs.pageSize = MaxPerPage
 totalpages = Rs.PageCount
 rs.Absolutepage = Currentpage
 rscount = rs.recordcount
赋值:
firstname = rs(“firstname”)
lastname = rs(“lastname”)
过滤:
rs.filter = “age>30”


三、 结语 
        通过建立XML持久文件,让存储过程的结果集能重复使用,大大加快了数据库查询速度、提升了程序交互的性能,并解决了存储过程结果集不能分页,在结果集中再过滤条件等一系列使用上的问题。