Esta clase se basa en la clase de caché de datos walkmanxml, que es más conveniente de usar. Bienvenido a comunicarse y progresar. Copie el código de la siguiente manera:
<%
Clase de caché Rem xml
'------------------------------------------------ - ------------------
'Conserve la información de derechos de autor al reimprimir
'Autor: ╰⑥月の雨╮
'Versión: ver1.0
'Esta categoría extrae lecciones de la clase de caché de datos walkmanxml, que es más conveniente de usar. Bienvenido a comunicarse y progresar.
'------------------------------------------------ - ------------------
Clase XmlCacheCls
Private m_DataConn 'Fuente de datos, debe estar abierta
Private m_CacheTime 'Tiempo de caché, en segundos, el valor predeterminado es 10 minutos
Ruta xml privada de m_XmlFile ', use dirección absoluta, no se requiere extensión
Declaración SQL privada m_Sql '
Matriz de datos devuelta privada m_SQLArr '(solo lectura)
Private m_ReadOn '(solo lectura) devuelve el modo de lectura 1-base de datos 2-xml para detección
'Atributos de clase============================================
'Fuente de datos
Conexión de conjunto de propiedad pública (v)
Establecer m_DataConn = v
Propiedad final
Propiedad pública Obtener Conn
Conexión = m_DataConn
Propiedad final
'Tiempo de caché
Propiedad pública Let CacheTime(v)
m_CacheTime=v
Propiedad final
Propiedad pública Obtener CacheTime
Tiempo de caché = m_Tiempo de caché
Propiedad final
'ruta xml, use dirección absoluta
Propiedad pública Let XmlFile(v)
m_XmlFile = v
Propiedad final
Propiedad pública GetXmlFile
ArchivoXml = m_ArchivoXml
Propiedad final
'declaración sql
Propiedad pública Let Sql(v)
m_Sql=v
Propiedad final
Propiedad pública obtener SQL
SQL = m_SQL
Propiedad final
'Devolver matriz de registros
Propiedad pública Obtener SQLArr
SQLArr = m_SQLArr
Propiedad final
'Volver al modo lectura
Propiedad pública Leer más
Leer en = m_ReadOn
Propiedad final
'Destrucción de clase ==========================================
Private Sub Class_Initialize() 'Inicializar clase
m_CacheTime=60*10 'El tiempo de caché predeterminado es 10 minutos
Subtítulo final
Private Sub Class_Terminate() 'Clase de liberación
Subtítulo final
'Métodos públicos de la clase ==========================================
Rem lee datos
Función pública Leer datos
Si FSOExistsFile(m_XmlFile) Entonces 'existe caché XML, lea directamente desde xml
Leer datos de XML
m_ReadOn=2
Demás
Leer datos de DB
m_ReadOn=1
Terminar si
Función final
Rem escribe datos XML
Función pública WriteDataToXml
Si FSOExistsFile(m_XmlFile) Entonces 'Salir directamente si xml no ha caducado
Si no esXmlCacheExpired(m_XmlFile,m_CacheTime) entonces salga de la función
Terminar si
atenuados
contenido dimxml
tenue k
contenido xml=
xmlcontent = xmlcontent & <?xml version=1.0 codificación=gb2312?> & vbnewline
xmlcontent = xmlcontent & <raíz> & vbnewline
k=0
Establecer Rs = Server.CreateObject (Adodb.Recordset)
Rs.abrir m_sql,m_DataConn,1
Mientras no sea rs.eof
contenido xml = contenido xml & <elemento
Para cada campo en rs.Fields
xmlcontent = xmlcontent & campo.nombre & = & XMLStringEnCode(campo.valor) &
Próximo
rs.movenext
k=k+1
xmlcontent = xmlcontent & >>item> & vbnewline
Encaminarse a
rs.cerrar
Configurar=Nada
xmlcontent = xmlcontent & </root> & vbnewline
ruta de carpeta oscura
ruta de carpeta = Recortar(izquierda(m_XmlFile,InstrRev(m_XmlFile,/)-1))
Llame a CreateDIR(ruta de carpeta&) 'Crear carpeta
WriteStringToXMLFile m_XmlFile,xmlcontent
Función final
'Métodos privados de la clase ==========================================
Rem lee datos del archivo XML
Función privada ReadDataFromXml
Dim SQLARR() 'Matriz
Dim XmlDoc 'objeto XmlDoc
Dim objNode 'nodo secundario
Dim ItemsLength 'La longitud del nodo secundario
Dim AttributesLength 'La longitud de los atributos del nodo secundario
Establecer XmlDoc=Server.CreateObject(Microsoft.XMLDOM)
XmlDoc.Async=Falso
XmlDoc.Load(m_XmlFile)
Establecer objNode=XmlDoc.documentElement 'Obtener el nodo raíz
ItemsLength=objNode.ChildNodes.length 'Obtiene la longitud de los nodos secundarios
Para items_i=0 A ItemLength-1
AttributesLength=objNode.childNodes(items_i).Attributes.length 'Obtiene la longitud de los atributos del nodo secundario
Para Atributos_i=0 A AtributosLongitud-1
ReDim Preservar SQLARR (AtributosLongitud-1, elementos_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
Próximo
Próximo
Establecer XmlDoc = Nada
m_SQLArr = SQLARR
Función final
Rem lee datos de la base de datos.
Función privada ReadDataFromDB
atenuados
DimSQLARR()
tenue k
k=0
Establecer Rs = Server.CreateObject (Adodb.Recordset)
Rs.abrir m_sql,m_DataConn,1
Si no (rs.eof y rs.bof) entonces
Mientras no sea rs.eof
Longitud de campo tenue
longitud del campo = rs.Fields.count
ReDim Preservar SQLARR(fieldlegth,k)
Campo oscuro
Para campoi = 0 A campolegth-1
SQLArr(campoi,k) = rs.Fields(campoi).valor
Próximo
rs.movenext
k=k+1
Encaminarse a
Terminar si
rs.cerrar
Configurar=Nada
m_SQLArr = SQLArr
Función final
'Métodos privados auxiliares de la clase =============================================
Rem escribe un archivo xml
Sub privado WriteStringToXMLFile (nombre de archivo, cadena)
fs,ts tenues
Establecer fs = crear objeto (scripting.filesystemobject)
Si no es IsObject(fs), entonces salga de Sub
Establecer ts=fs.OpenTextFile(nombre de archivo,2,Verdadero)
ts.writeline(cadena)
ts.cerrar
Establecer ts=Nada
Establecer fs=Nada
Subtítulo final
Rem determina si el caché xml ha caducado
La función privada esXmlCacheExpired(archivo,segundos)
archivo oscuro la última vez
archivoúltimahora = FSOGetFileLastModifiedTime(archivo)
Si DateAdd(s,segundos,filelasttime) <ahora entonces
isXmlCacheExpired = Verdadero
Demás
isXmlCacheExpired = Falso
Terminar si
Función final
Rem obtiene la hora de la última modificación del archivo.
Función privada FSOGetFileLastModifiedTime(archivo)
Tenue fso,f,s
Establecer fso=CreateObject(Scripting.FileSystemObject)
Establecer f=fso.GetFile(archivo)
FSOGetFileLastModifiedTime = f.DateLastModified
Establecer f = Nada
Establecer fso = Nada
Función final
El archivo Rem existe
Función pública FSOExistsFile(archivo)
fso tenue
Establecer fso = Server.CreateObject(Scripting.FileSystemObject)
Si fso.FileExists (archivo) Entonces
FSOExistsFile = verdadero
Demás
FSOExistsFile = falso
Terminar si
Establecer fso = nada
Función final
Carácter de escape xml rem
Función privada XMLStringEnCode(str)
Si str& = Entonces XMLStringEnCode=:Salir de la función
cadena = Reemplazar (cadena,<,<)
cadena = Reemplazar (cadena,>,>)
cadena = Reemplazar (cadena,',')
cadena = Reemplazar (cadena,,)
cadena = Reemplazar (cadena,&,&)
XMLStringEnCode = cadena
Función final
Rem crea carpeta
Función privada CreateDIR (byval LocalPath)
En caso de error Continuar siguiente
Dim i,FileObject,patharr,path_level,pathtmp,cpath
RutaLocal = Reemplazar(RutaLocal,/,/)
Establecer FileObject = server.createobject(Scripting.FileSystemObject)
rutaarr = Dividir(RutaLocal,/)
nivel_ruta = UBound(rutarr)
Para i = 0 A nivel_ruta
Si i = 0 entonces
rutatmp=patharr(0) & /
Demás
rutatmp = rutatmp & rutaarr(i) & /
Terminar si
rutac = izquierda(rutatmp,len(rutatmp)-1)
Si no es FileObject.FolderExists (cpath), entonces
'Respuesta.escribir cpath
Ruta de acceso FileObject.CreateFolder
Terminar si
Próximo
Establecer FileObject = Nada
Si número de error<>0 Entonces
CrearDIR = Falso
errar.Borrar
Demás
CrearDIR = Verdadero
Terminar si
Función final
Fin de clase
'Establecer caché
Función SetCache(xmlFilePath,CacheTime,Conn,Sql)
establecer caché = nuevo XmlCacheCls
Establecer caché.Conn=Conn
cache.XmlFile=xmlFilePath
caché.Sql=Sql
cache.CacheTime=Tiempo de caché
caché.WriteDataToXml
Establecer caché = Nada
Función final
'Leer caché
Función ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)
establecer caché = nuevo XmlCacheCls
Establecer caché.Conn=conn
cache.XmlFile=xmlFilePath
caché.Sql=Sql
caché.ReadData
ReadCache = caché.SQLArr
ReadOn=caché.ReadOn
Función final
%>
Cómo utilizar:
1 datos de caché a xml
Código:
Copie el código de código de la siguiente manera:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
establecer caché = nuevo XmlCacheCls
Establecer caché.Conn=conn
cache.XmlFile=Servidor.Mapppath(xmlcache/index/Top.xml)
cache.Sql=seleccione los 15 principales prod_id,prod_name,prod_uptime de tblProduction
caché.WriteDataToXml
%>
2 Leer datos almacenados en caché
Código:
Copie el código de código de la siguiente manera:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
establecer caché = nuevo XmlCacheCls
Establecer caché.Conn=conn
cache.XmlFile=Servidor.Mapppath(xmlcache/index/Top.xml)
cache.Sql=seleccione los 15 principales prod_id,prod_name,prod_uptime de tblOrden de producción por prod_id asc
caché.ReadData
rsArray=caché.SQLArr
si esArray(rsArray) entonces
para i=0 a ubound(rsArray,2)
para j=0 a ubound(rsArray,1)
respuesta.Write(rsArray(j,i)&<br><br>)
próximo
próximo
terminar si
%>Tiempo de caché, la unidad predeterminada es 10 minutos en segundos. También puede configurar cache.CacheTime=60*30 30 minutos usted mismo;