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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 留不住的时光

怎样才能将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持久文件,让存储过程的结果集能重复使用,大大加快了数据库查询速度、提升了程序交互的性能,并解决了存储过程结果集不能分页,在结果集中再过滤条件等一系列使用上的问题。