ADO数据与XML数据间的转换的类.docx

上传人:b****2 文档编号:505514 上传时间:2023-04-29 格式:DOCX 页数:22 大小:20KB
下载 相关 举报
ADO数据与XML数据间的转换的类.docx_第1页
第1页 / 共22页
ADO数据与XML数据间的转换的类.docx_第2页
第2页 / 共22页
ADO数据与XML数据间的转换的类.docx_第3页
第3页 / 共22页
ADO数据与XML数据间的转换的类.docx_第4页
第4页 / 共22页
ADO数据与XML数据间的转换的类.docx_第5页
第5页 / 共22页
ADO数据与XML数据间的转换的类.docx_第6页
第6页 / 共22页
ADO数据与XML数据间的转换的类.docx_第7页
第7页 / 共22页
ADO数据与XML数据间的转换的类.docx_第8页
第8页 / 共22页
ADO数据与XML数据间的转换的类.docx_第9页
第9页 / 共22页
ADO数据与XML数据间的转换的类.docx_第10页
第10页 / 共22页
ADO数据与XML数据间的转换的类.docx_第11页
第11页 / 共22页
ADO数据与XML数据间的转换的类.docx_第12页
第12页 / 共22页
ADO数据与XML数据间的转换的类.docx_第13页
第13页 / 共22页
ADO数据与XML数据间的转换的类.docx_第14页
第14页 / 共22页
ADO数据与XML数据间的转换的类.docx_第15页
第15页 / 共22页
ADO数据与XML数据间的转换的类.docx_第16页
第16页 / 共22页
ADO数据与XML数据间的转换的类.docx_第17页
第17页 / 共22页
ADO数据与XML数据间的转换的类.docx_第18页
第18页 / 共22页
ADO数据与XML数据间的转换的类.docx_第19页
第19页 / 共22页
ADO数据与XML数据间的转换的类.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ADO数据与XML数据间的转换的类.docx

《ADO数据与XML数据间的转换的类.docx》由会员分享,可在线阅读,更多相关《ADO数据与XML数据间的转换的类.docx(22页珍藏版)》请在冰点文库上搜索。

ADO数据与XML数据间的转换的类.docx

ADO数据与XML数据间的转换的类

ADO数据与XML数据间的转换的类

  当对现有数据库的数据进行分析时,经常需要对某一部分的数据进行分析.此时,使用

  1.SQL查询分析器?

  但其往往不直观,查找某个关键字又需要重新执行新的SQL.

  2.SQLXML模板?

  但又不一定有权限建立新的虚拟目录,且某些SQL语句SQLXML模板不支持

  数据拆离时也有相似问题。

  尤其当不同网络,不同环境,需要重新导入数据,进行分析或拆离,困难尤为明显。

  能不能有一种方法,可以将数据脱离于数据库进行分析,需要时再导入到数据库中?

  XML是个很好的选择!

  ADO本身支持数据到XML的转换,只需要对其格式进行解析,成为自己的XML文件通用格式,就可以进行本地分析

  而对通用XML格式进行数据库映射,就可完成数据重新导入数据库的工作.

  下面是一个ADO数据(表的基本数据)与XML数据间的相互转换的类(ASP实现),初步完成表数据的导入、导出。

  通用表间关系映射(通过XSD描述),考虑之中,希望各位赐教指点,不胜感激.

  一个调用类的例子:

  example.asp

  

--#includefile="transformData.asp"-->

<%

DimaSQL(1,1)

DimoXMLData

  '======连接数据库过程======

'获得数据库连接对象oDbConn

'======连接数据库过程======

  aSQL(0,0)="PubLable"

aSQL(0,1)="Select*fromPubLabelwherecLabelNamelike'%abc%'OrderbynLabelID"

aSQL(1,0)="PubUser"

aSQL(1,1)="Select*fromPubUserwherecUserNamelike'%abc%'OrderbynUserID"

  setoXMLData=NewTransformData

  CallExport()

'CallImport()

setoXMLData=nothing'//当对象属性有默认值(default())时,可以不用在赋值

  SubExport()    ' //导出数据

  oXMLData.aSQlData =aSQL 

'必须   2维SQL语句数组

oXMLData.bIsSave =1  

'default

(1)  是否保存为XML文件

oXMLData.bIsOutput =1  

'default(0)  是否显示XML数据

oXMLData.sSaveFileName="Data.xml"

'default(当前时间加随机数)如果保存XML数据,XML文件名称

oXMLData.sSaveFilePath="" 

'default("")  如果保存XML数据,XML文件路径(相对路径)

oXMLData.sEncoding ="gb2312" 

'default("gb2312") XML文件编码类型

  oXMLData.Export(oDbConn)  

'//导出数据过程

  IF(oXMLData.nErrCode<>0)Then 'nErrCode(错误代码)为0,运行成功

 Response.WriteoXMLData.GetErrExegesis(oXMLData.nErrCode)

 'nErrCode(错误代码),通过方法GetErrExegesis()获得注释

EndIF

  EndSub

  SubImport()    ' //导入数据

  oXMLData.sXMLFile ="Data.xml"'必须 数据源XML文件(包含相对路径)

  oXMLData.sVacancyCols="nLabelID"'必须 指定某些字段的值可以不导入(屏蔽字段)

     '格式 "nID,dDate" (以‘,’分隔字段)

  oXMLData.Import(oDbConn)

  IF(oXMLData.nErrCode=0)Then

 Response.Write"数据导入成功!

"

Else

 Response.WriteoXMLData.GetErrExegesis(oXMLData.nErrCode)

EndIF

EndSub

%>

类的代码:

  TransformData.asp

  <%

ClassTransformData

  '*****************************************************

'Copyright(c)2003

'创建人:

moonpiazza

'日  期:

2003.5.21

'描  述:

ADO数据与XML数据间的转换(ASP实现)

'版  本:

1.0

'功  能:

 ADO数据(表的基本数据)与XML数据间的相互转换

'待改进:

表间数据的关联性(通用),数据量大时速度问题

'

'版权:

欢迎改进,翻版不究 :

_)

'

'*****************************************************'*****************************************************

'公共方法:

Export,Import,GetErrExegesis

'*****************************************************

  '=============================公共变量 End=============================

Privatem_oXMLDOM

Privatem_oXSLDOM

'=============================公共变量Begin=============================

  '=============================错误代码定义Begin=============================

Privatem_nErrCode_NotArray

Privatem_nErrCode_XMLDOM

Privatem_nErrCode_ReadData

Privatem_nErrCode_WriteData

Privatem_nErrCode_Save 

Privatem_nErrCode_EnsFile

Privatem_nErrCode_ErrFile

'=============================错误代码定义 End=============================

  '=============================属性定义Begin=============================

  Privatem_aSQlData 

Privatem_bIsSave

Privatem_bIsOutput

Privatem_sSaveFileName

Privatem_sSaveFilePath

Privatem_sXMLFile

Privatem_sVacancyCols

Privatem_nErrCode

Privatem_sEncoding

Privatem_sImportSQL

  '*****************************************************

'属性:

aSQlData

'状态:

可写

'类型:

2维数组

'描述:

SQL语句数组,1维是表名称,2维是相应SQL语句

'*****************************************************

PublicPropertyLetaSQlData(ByRefp_aSQlData)

m_aSQlData=p_aSQlData

EndProperty'*****************************************************

'属性:

bIsSave

'状态:

可写

'类型:

数字(0,1)default

(1)

'描述:

导出数据时,是否保存为XML文件

'*****************************************************

PublicPropertyLetbIsSave(ByRefp_bIsSave)

m_bIsSave=Cint(p_bIsSave)

EndProperty'*****************************************************

'属性:

bIsOutput

'状态:

可写

'类型:

数字(0,1)default(0)

'描述:

导出数据时,是否显示XML数据

'*****************************************************

PublicPropertyLetbIsOutput(ByRefp_bIsOutput)

m_bIsOutput=Cint(p_bIsOutput)

EndProperty'*****************************************************

'属性:

sSaveFileName

'状态:

可写,可读

'类型:

字符串default(GetRndFileName())

'描述:

导出数据时,如果保存XML数据,XML文件名称

'*****************************************************

PublicPropertyLetsSaveFileName(ByRefp_sSaveFileName)

m_sSaveFileName=p_sSaveFileName

EndProperty

  PublicPropertyGetsSaveFileName()

sSaveFileName=m_sSaveFileName

EndProperty'*****************************************************

'属性:

sSaveFilePath

'状态:

可写,可读

'类型:

字符串default("")

'描述:

导出数据时,如果保存XML数据,XML文件路径(相对路径)

'*****************************************************

PublicPropertyLetsSaveFilePath(ByRefp_sSaveFilePath)

m_sSaveFilePath=p_sSaveFilePath

EndProperty

  PublicPropertyGetsSaveFilePath()

sSaveFilePath=m_sSaveFilePath

EndProperty'*****************************************************

'属性:

sXMLFile

'状态:

可写

'类型:

字符串

'描述:

导入数据时,数据源XML文件(包含相对路径)

'*****************************************************

PublicPropertyLetsXMLFile(ByRefp_sXMLFile)

m_sXMLFile=p_sXMLFile

EndProperty'*****************************************************

'属性:

sVacancyCols

'状态:

可写

'类型:

字符串default("")

' 格式 "nID,dDate" (以‘,’分隔字段)

'描述:

导入数据时,指定某些字段的值可以不导入(屏蔽字段)

'*****************************************************

PublicPropertyLetsVacancyCols(ByRefp_sVacancyCols)

m_sVacancyCols=","&p_sVacancyCols&","

EndProperty'*****************************************************

'属性:

nErrCode

'状态:

可读

'类型:

数字default(0)

'描述:

错误代码,可通过方法GetErrExegesis(ByRefp_nErrCode)获得注释

'*****************************************************

PublicPropertyGetnErrCode()

nErrCode=m_nErrCode

EndProperty'*****************************************************

'属性:

sEncoding

'状态:

可写

'类型:

字符串default("gb2312")

'描述:

XML文件编码类型

'*****************************************************

PublicPropertyLetsEncoding(ByRefp_sEncoding)

m_sEncoding=p_sEncoding

EndProperty'*****************************************************

'属性:

sImportSQL

'状态:

可读

'类型:

字符串default("gb2312")

'描述:

导入数据时,生成的SQL语句

'*****************************************************

PublicPropertyGetsImportSQL()

sImportSQL=m_sImportSQL

EndProperty

'=============================属性定义End=============================

  '*****************************************************

'初始化类

'*****************************************************

PrivateSubClass_Initialize()

  Server.ScriptTimeout=1000

  m_nErrCode_NotErr=0

m_nErrCode_NotArray=1

m_nErrCode_XMLDOM=2

m_nErrCode_ReadData=3

m_nErrCode_WriteData=4

m_nErrCode_Save =5

m_nErrCode_EnsFile=6

m_nErrCode_ErrFile=7m_bIsSave =1

m_bIsOutput =0

m_sSaveFilePath =""

m_sSaveFileName =""

m_sXMLFile =""

m_sVacancyCols =""

m_nErrCode =m_nErrCode_NotErr

m_sEncoding ="gb2312"

  EndSub'*****************************************************

'注销类

'*****************************************************

PrivateSubClass_Terminate()

 Setm_oXMLDOM=Nothing

 Setm_oXSLDOM=Nothing

EndSub'=============================数据导出Begin=============================

  '*****************************************************

'过程:

Export(ByRefp_oDbConn)

'描述:

导出数据

'参数:

' p_oDbConn:

数据库连接对象

'

'*****************************************************

PublicSubExport(ByRefp_oDbConn)

DimnI,nMaxI

DimsTableName,sSQL

DimsDataXML,sXSLStr

DimsXMLStr

If(NotIsArray(m_aSQlData))Then

 m_nErrCode=m_nErrCode_NotArray

 ExitSub

EndIf

  ONERRORRESUMENEXT

  Setm_oXSLDOM=Server.CreateObject("Microsoft.XMLDOM")

Setm_oXMLDOM=Server.CreateObject("Microsoft.XMLDOM")

IfErr.Number<>0Then

 m_nErrCode=m_nErrCode_XMLDOM

 ExitSub

EndIf

sXSLStr =GetXSL() 

  m_oXMLDOM.async=false

m_oXSLDOM.async=false

m_oXSLDOM.loadxml(sXSLStr)

  sDataXML="

xmlversion='1.0'encoding='"&m_sEncoding&"'?

>"

sDataXML=sDataXML&""

  nMaxI=Ubound(m_aSQlData,1)

  FornI=0TonMaxI

  sTableName=m_aSQlData(nI,0)

  If(Len(sTableName)>0)Then

  sSQL =m_aSQlData(nI,1)

 sXMLStr =GetDataXML(sTableName,sSQL,p_oDbConn)

 

 IF(m_nErrCode>m_nErrCode_NotErr)Then

  ExitSub

 EndIF

 

  sDataXML=sDataXML&sXMLStr

 EndIf 

Next

  sDataXML=sDataXML&""

IF(m_bIsOutput)Then

 CallResponseXML(sDataXML)

EndIF

IF(m_bIsSave)Then

 CallSaveDataXML(sDataXML)

EndIF

EndSub'*****************************************************

'函数:

GetRndFileName()

'描述:

获得随机名称,由当前时间和7位随机数字构成

'*****************************************************

PrivateFunctionGetRndFileName()

DimnMax,nMin

DimsRnd,sDate

  Randomize

  nMin=1000000

nMax=9999999

  sRnd=Int(((nMax-nMin+1)*Rnd)+nMin)

sDate=Replace(Replace(Replace(now(),"-",""),":

",""),"","")

  GetRndFileName="_"&sDate&sRnd&".xml"

EndFunction'*****************************************************

'函数:

GetXSL()

'描述:

获得XSL文件字符串

'*****************************************************

PrivateFunctionGetXSL()

DimsXSLStr

  sXSLStr=""

sXSLStr=sXSLStr&"

xmlversion='1.0'encoding='"&m_sEncoding&"'?

>"

sXSLStr=sXSLStr&"

stylesheetversion='1.0'xmlns:

xsl='http:

//www.w3.org/1999/XSL/Transform'xmlns:

s='uuid:

BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'xmlns:

dt='uuid:

C2F41010-65B3-11d1-A29F-00AA00C14882'xmlns:

rs='urn:

schemas-microsoft-com:

rowset'xmlns:

z='#RowsetSchema'>"

sXSLStr=sXSLStr&"

outputomit-xml-declaration='yes'/>"

sXSLStr=sXSLStr&"

templatematch='/'>"

sXSLStr=sXSLStr&"

for-eachselect='/xml/rs:

data/z:

row'>"

sXSLStr=sXSLStr&"

elementname='Row'>"

sXSLStr=sXSLStr&"

for-eachselect='@*'>"

sXSLStr=sXSLStr&"

attributename='{name()}'>"

sXSLStr=sXSLStr&"

value-ofselect='.'/>"

sXSLStr=sXSLStr&"

attribute>"

sXSLStr=sXSLStr&"

for-each>"

sXSLStr=sXSLStr&"

element>"

sXSLStr=sXSLStr&"

for-each>"

sXSLStr=sXSLStr&"

template>"

s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2