Kelas ini mengacu pada kelas cache data walkmanxml, yang lebih nyaman digunakan. Selamat berkomunikasi dan membuat kemajuan.
<%
Kelas cache rem xml
'------------------------------------------------ - ------------------------------
'Harap simpan informasi hak cipta saat mencetak ulang
'Penulis: ╰⑥月の雨╮
'Versi: ver1.0
'Kategori ini mengambil pelajaran dari kelas cache data walkmanxml, yang lebih nyaman digunakan. Selamat berkomunikasi dan membuat kemajuan.
'------------------------------------------------ - ------------------------------
Kelas XmlCacheCls
Private m_DataConn 'Sumber data, harus terbuka
Private m_CacheTime 'Waktu cache, dalam hitungan detik, defaultnya adalah 10 menit
Jalur xml m_XmlFile pribadi, gunakan alamat absolut, tidak diperlukan ekstensi
Pernyataan SQL m_Sql 'pribadi
Private m_SQLArr '(read-only) mengembalikan array data
Private m_ReadOn '(read-only) mengembalikan mode membaca 1-database 2-xml untuk deteksi
'Atribut kelas=============
'Sumber data
Kumpulan Properti Umum Sambungan(v)
Tetapkan m_DataConn = v
Properti Akhir
Properti Umum Dapatkan Conn
Sambungan = m_DataConn
Properti Akhir
'Waktunya simpan
Properti Publik Biarkan CacheTime(v)
m_CacheTime = v
Properti Akhir
Properti Publik Dapatkan CacheTime
Waktu Cache = m_Waktu Cache
Properti Akhir
'jalur xml, gunakan alamat absolut
Properti Publik Biarkan XmlFile(v)
m_XmlFile = v
Properti Akhir
GetXmlFile Properti Publik
XmlFile = m_XmlFile
Properti Akhir
'Pernyataan sql
Properti Publik Biarkan Sql(v)
m_Sql = v
Properti Akhir
Properti Umum Dapatkan Sql
Sql = m_Sql
Properti Akhir
'Kembalikan susunan rekaman
Properti Publik Dapatkan SQLArr
SQLArr = m_SQLArr
Properti Akhir
'Kembali ke mode membaca
Properti Publik Dapatkan Bacaan
BacaOn = m_ReadOn
Properti Akhir
'Penghancuran kelas ============
Sub Pribadi Class_Initialize() 'Inisialisasi kelas
m_CacheTime=60*10 'Waktu cache default adalah 10 menit
Akhiri Sub
Sub Pribadi Class_Terminate() 'Kelas rilis
Akhiri Sub
'Metode publik kelas ============
Rem membaca data
Data Baca Fungsi Publik
Jika FSOExistsFile(m_XmlFile) Lalu 'Xml cache ada, baca langsung dari xml
BacaDataDariXml
m_ReadOn=2
Kalau tidak
BacaDataDariDB
m_ReadOn=1
Akhiri Jika
Fungsi Akhir
Rem menulis data XML
Fungsi Publik WriteDataToXml
Jika FSOExistsFile(m_XmlFile) Lalu 'Langsung keluar jika xml belum kedaluwarsa
Jika Bukan isXmlCacheExpired(m_XmlFile,m_CacheTime) Kemudian Keluar dari Fungsi
Akhiri Jika
Redup
Konten Dimxml
Redupkan k
konten xml=
xmlcontent = xmlcontent & <?xml version=1.0 coding=gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
k=0
Setel Rs = Server.CreateObject(Adodb.Recordset)
Rs.buka m_sql,m_DataConn,1
Meskipun Bukan rs.eof
xmlcontent = xmlcontent & <item
Untuk Setiap bidang Di rs.Fields
xmlcontent = xmlcontent & field.name & = & XMLStringEnCode(field.value) &
Berikutnya
rs.movenext
k=k+1
xmlcontent = xmlcontent & ></item> & vbnewline
Pergi ke
rs.tutup
Setr=Tidak ada
xmlcontent = xmlcontent & </root> & vbnewline
Redupkan jalur folder
jalur folder = Pangkas(kiri(m_XmlFile,InstrRev(m_XmlFile,/)-1))
Panggil CreateDIR(folderpath&) 'Buat folder
WriteStringToXMLFile m_XmlFile,xmlcontent
Fungsi Akhir
'Metode pribadi kelas ============
Rem membaca data dari file Xml
Fungsi Pribadi ReadDataFromXml
Redupkan SQLARR() 'Array
Redupkan objek XmlDoc 'XmlDoc
Redupkan objNode 'simpul anak
Redupkan ItemsLength 'Panjang node anak
Redupkan AttributesLength 'Panjang atribut simpul anak
Setel XmlDoc=Server.CreateObject(Microsoft.XMLDOM)
XmlDoc.Async=Salah
XmlDoc.Muat(m_XmlFile)
Setel objNode=XmlDoc.documentElement 'Dapatkan simpul akar
ItemsLength=objNode.ChildNodes.length 'Dapatkan panjang node anak
Untuk item_i=0 Ke ItemsLength-1
AttributesLength=objNode.childNodes(items_i).Attributes.length 'Dapatkan panjang atribut simpul anak
Untuk Attributes_i=0 Ke AttributesLength-1
ReDim Pertahankan SQLARR(AttributesLength-1,items_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
Berikutnya
Berikutnya
Setel XmlDoc = Tidak Ada
m_SQLArr = SQLARR
Fungsi Akhir
Rem membaca data dari database
Fungsi Pribadi ReadDataFromDB
Redup
RedupSQLARR()
Redupkan k
k=0
Setel Rs = Server.CreateObject(Adodb.Recordset)
Rs.buka m_sql,m_DataConn,1
Jika Tidak (rs.eof dan rs.bof) Lalu
Meskipun Bukan rs.eof
Redupkan panjang lapangan
fieldlegth = rs.Fields.count
ReDim Pertahankan SQLARR(panjang bidang,k)
Bidang redup
Untuk fieldi = 0 Ke fieldpanjang-1
SQLArr(fieldi,k) = rs.Fields(fieldi).nilai
Berikutnya
rs.movenext
k=k+1
Pergi ke
Akhiri Jika
rs.tutup
Setr=Tidak ada
m_SQLArr = SQLArr
Fungsi Akhir
'Metode privat tambahan kelas ==============
Rem menulis file xml
Sub Pribadi WriteStringToXMLFile(nama file,str)
Redupkan fs,ts
Setel fs= buat objek(scripting.filesystemobject)
Jika Bukan IsObject(fs) Kemudian Keluar dari Sub
Setel ts=fs.OpenTextFile(nama file,2,Benar)
ts.writeline(str)
ts.tutup
Tetapkan ts=Tidak ada
Tetapkan fs=Tidak ada
Akhiri Sub
Rem menentukan apakah cache xml telah kedaluwarsa
Fungsi Pribadi isXmlCacheExpired(file,detik)
Redupkan file terakhir kali
filelasttime = FSOGetFileLastModifiedTime(file)
Jika DateAdd(s,seconds,filelasttime) < Sekarang Lalu
isXmlCacheExpired = Benar
Kalau tidak
isXmlCacheExpired = Salah
Akhiri Jika
Fungsi Akhir
Rem mendapatkan waktu modifikasi terakhir file
Fungsi Pribadi FSOGetFileLastModifiedTime(file)
Redupkan fso,f,s
Setel fso=CreateObject(Scripting.FileSystemObject)
Setel f=fso.GetFile(file)
FSOGetFileLastModifiedTime = f.DateLastModified
Tetapkan f = Tidak ada
Tetapkan fso = Tidak ada
Fungsi Akhir
File rem ada
Fungsi Publik FSOExistsFile(file)
Redupkan
Setel fso = Server.CreateObject(Scripting.FileSystemObject)
Jika fso.FileExists(file) Lalu
FSOExistsFile = benar
Kalau tidak
FSOExistsFile = salah
Akhiri Jika
Tetapkan fso = tidak ada
Fungsi Akhir
Karakter pelarian rem xml
Fungsi Pribadi XMLStringEnCode(str)
Jika str& = Maka XMLStringEnCode=:Keluar dari Fungsi
str = Ganti(str,<,<)
str = Ganti(str,>,>)
str = Ganti(str,',')
str = Ganti(str,,)
str = Ganti(str,&,&)
XMLStringEnCode = str
Fungsi Akhir
Rem membuat folder
Fungsi pribadi CreateDIR (byval LocalPath)
Pada Kesalahan Lanjutkan Berikutnya
Redupkan saya,FileObject,patharr,path_level,pathtmp,cpath
LocalPath = Ganti(LocalPath,/,/)
Setel FileObject = server.createobject(Scripting.FileSystemObject)
patharr = Pisahkan(Jalur Lokal,/)
path_level = UBound(patharr)
Untuk i = 0 Ke path_level
Jika i=0 Maka
jalurtmp=jalur(0) & /
Kalau tidak
jalurtmp = jalurtmp & jalur(i) & /
Akhiri Jika
cpath = kiri(jalurtmp,len(jalurtmp)-1)
Jika Bukan FileObject.FolderExists(cpath) Lalu
'Respon.tulis cpath
FileObject.CreateFolder cpath
Akhiri Jika
Berikutnya
Setel FileObject = Tidak Ada
Jika err.number<>0 Lalu
BuatDIR = Salah
err.Clear
Kalau tidak
BuatDIR = Benar
Akhiri Jika
Fungsi Akhir
Kelas Akhir
'Setel tembolok
Fungsi SetCache(xmlFilePath,CacheTime,Conn,Sql)
atur cache=XmlCacheCls baru
Setel cache.Conn=Samb
cache.XmlFile=xmlFilePath
cache.Sql=Sql
cache.CacheTime=Waktu Cache
cache.WriteDataToXml
Setel cache = Tidak ada
Fungsi Akhir
'Baca tembolok
Fungsi ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=xmlFilePath
cache.Sql=Sql
cache.ReadData
BacaCache=cache.SQLArr
ReadOn=cache.ReadOn
Fungsi Akhir
%>
Cara menggunakan:
1 data cache ke xml
Kode:
Copy kode kodenya sebagai berikut:
<!--#include file=Conn.asp-->
<!--#termasuk file=Xml.asp-->
<%
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
cache.Sql=pilih 15 prod_id,prod_name,prod_uptime teratas dari tblProduction
cache.WriteDataToXml
%>
2 Baca data cache
Kode:
Copy kode kodenya sebagai berikut:
<!--#include file=Conn.asp-->
<!--#termasuk file=Xml.asp-->
<%
atur cache=XmlCacheCls baru
Setel cache.Conn=sambungan
cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
cache.Sql=pilih 15 prod_id,prod_name,prod_uptime teratas dari tblProduction pesanan berdasarkan prod_id asc
cache.ReadData
rsArray=cache.SQLArr
jika isArray(rsArray) maka
untuk i=0 hingga ubound(rsArray,2)
untuk j=0 hingga ubound(rsArray,1)
respon.Tulis(rsArray(j,i)&<br><br>)
Berikutnya
Berikutnya
berakhir jika
%>Waktu cache, satuan default adalah 10 menit dalam hitungan detik; Anda juga dapat mengatur cache.CacheTime=60*30 30 menit sendiri