이 클래스는 사용하기 더 편리한 walkmanxml 데이터 캐시 클래스를 사용합니다. 다음과 같이 코드를 복사하고 진행하세요.
<%
Rem XML 캐시 클래스
'------------------------------------------------ - ------------------
'재인쇄 시 저작권 정보를 유지해주세요.
'저자 : ╰⑥月の雨╮
'버전: ver1.0
'이 카테고리는 사용하기 더 편리한 walkmanxml 데이터 캐시 클래스에서 교훈을 얻습니다.
'------------------------------------------------ - ------------------
클래스 XmlCacheCls
Private m_DataConn '데이터 소스가 열려 있어야 합니다.
Private m_CacheTime '캐시 시간(초), 기본값은 10분입니다.
Private m_XmlFile 'xml 경로, 절대 주소 사용, 확장자 필요 없음
비공개 m_Sql 'SQL 문
Private m_SQLArr '(읽기 전용) 반환된 데이터 배열
Private m_ReadOn '(읽기 전용)은 감지를 위해 읽기 모드 1-데이터베이스 2-xml을 반환합니다.
'클래스 속성==========================================
'데이터 소스
공용 속성 집합 Conn(v)
m_DataConn = v로 설정
끝 속성
공공 재산 Get Conn
Conn = m_DataConn
끝 속성
'캐시 시간
공용 속성 Let CacheTime(v)
m_CacheTime = v
끝 속성
공용 속성 CacheTime 가져오기
캐시타임 = m_CacheTime
끝 속성
'xml 경로, 절대 주소 사용
공용 속성 Let XmlFile(v)
m_Xml파일 = v
끝 속성
공용 속성 GetXmlFile
XmlFile = m_XmlFile
끝 속성
'SQL문
공공 재산 Let Sql(v)
m_Sql = v
끝 속성
공공 재산 SQL 가져오기
SQL = m_Sql
끝 속성
'반환 레코드 배열
공용 속성 SQLArr 가져오기
SQLArr = m_SQLArr
끝 속성
'읽기 모드로 돌아가기
공용 속성 ReadOn 가져오기
읽기온 = m_ReadOn
끝 속성
'클래스의 파괴 =========================================
Private Sub Class_Initialize() '클래스 초기화
m_CacheTime=60*10 '기본 캐시 시간은 10분입니다.
서브 끝
Private Sub Class_Terminate() '클래스 해제
서브 끝
'클래스의 공개 메소드 =========================================
Rem은 데이터를 읽습니다.
공개 함수 ReadData
FSOExistsFile(m_XmlFile) Then 'Xml 캐시가 존재하는 경우 xml에서 직접 읽습니다.
ReadDataFromXml
m_ReadOn=2
또 다른
DB에서 데이터 읽기
m_ReadOn=1
종료 조건
기능 종료
Rem은 XML 데이터를 씁니다.
공용 함수 WriteDataToXml
If FSOExistsFile(m_XmlFile) Then 'xml이 만료되지 않은 경우 직접 종료합니다.
isXmlCacheExpired(m_XmlFile,m_CacheTime)가 아닌 경우 함수 종료
종료 조건
딤머
Dimxml콘텐츠
희미한 k
xml내용=
xmlcontent = xmlcontent & <?xml 버전=1.0 인코딩=gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
k=0
Rs = Server.CreateObject(Adodb.Recordset) 설정
Rs.open m_sql,m_DataConn,1
rs.eof가 아닌 동안
xmlcontent = xmlcontent & <항목
rs.Fields의 각 필드에 대해
xmlcontent = xmlcontent & field.name & = & XMLStringEnCode(field.value) &
다음
rs.movenext
k=k+1
xmlcontent = xmlcontent & ></item> & vbnewline
향하게 하다
RS.닫기
설정자=아무것도 없음
xmlcontent = xmlcontent & </root> & vbnewline
희미한 폴더 경로
폴더 경로 = Trim(왼쪽(m_XmlFile,InstrRev(m_XmlFile,/)-1))
CreateDIR(folderpath&) '폴더 생성'을 호출합니다.
WriteStringToXMLFile m_XmlFile,xmlcontent
기능 종료
'클래스의 개인 메소드 =========================================
Rem은 XML 파일에서 데이터를 읽습니다.
개인 함수 ReadDataFromXml
희미한 SQLARR() '배열
Dim XmlDoc 'XmlDoc 개체
Dim objNode '자식 노드
Dim ItemsLength '자식 노드의 길이
Dim AttributesLength '하위 노드 속성의 길이
XmlDoc=Server.CreateObject(Microsoft.XMLDOM)로 설정합니다.
XmlDoc.Async=거짓
XmlDoc.Load(m_Xml파일)
Set objNode=XmlDoc.documentElement '루트 노드 가져오기
ItemsLength=objNode.ChildNodes.length '하위 노드의 길이를 가져옵니다.
items_i=0의 경우 ItemsLength-1로
AttributesLength=objNode.childNodes(items_i).Attributes.length '하위 노드 속성의 길이를 가져옵니다.
Attributes_i=0의 경우 AttributesLength-1로
ReDim 보존 SQLARR(AttributesLength-1,items_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
다음
다음
XmlDoc = 없음으로 설정
m_SQLArr = SQLARR
기능 종료
Rem은 데이터베이스에서 데이터를 읽습니다.
개인 함수 ReadDataFromDB
딤머
DimSQLARR()
희미한 k
k=0
Rs = Server.CreateObject(Adodb.Recordset) 설정
Rs.open m_sql,m_DataConn,1
그렇지 않은 경우(rs.eof 및 rs.bof)
rs.eof가 아닌 동안
희미한 필드 길이
fieldlegth = rs.Fields.count
ReDim 보존 SQLARR(fieldlegth,k)
딤필디
fieldi = 0의 경우 fieldlegth-1로
SQLArr(필드i,k) = rs.Fields(필드i).값
다음
rs.movenext
k=k+1
향하게 하다
종료 조건
RS.닫기
설정자=아무것도 없음
m_SQLArr = SQLArr
기능 종료
'클래스의 보조 개인 메서드 ===========================================
Rem은 xml 파일을 작성합니다.
개인 하위 WriteStringToXMLFile(파일 이름,str)
희미한 fs,ts
fs= createobject(scripting.filesystemobject) 설정
IsObject(fs)가 아니면 Sub를 종료합니다.
ts=fs.OpenTextFile(파일 이름,2,True) 설정
ts.writeline(str)
ts.닫기
ts=아무것도 설정하지 않음
fs=아무것도 설정하지 않음
서브 끝
Rem은 xml 캐시가 만료되었는지 확인합니다.
비공개 함수 isXmlCacheExpired(파일,초)
지난번에 희미한 파일
filelasttime = FSOGetFileLastModifiedTime(파일)
DateAdd(s,seconds,filelasttime) < Now Then
isXmlCacheExpired = 참
또 다른
isXmlCacheExpired = 거짓
종료 조건
기능 종료
Rem은 파일의 마지막 수정 시간을 가져옵니다.
개인 함수 FSOGetFileLastModifiedTime(파일)
흐릿한 fso,f,s
fso=CreateObject(Scripting.FileSystemObject) 설정
f=fso.GetFile(파일) 설정
FSOGetFileLastModifiedTime = f.DateLastModified
f = 없음으로 설정
fso = 없음 설정
기능 종료
Rem 파일이 존재합니다
공용 함수 FSOExistsFile(파일)
희미한 fso
fso = Server.CreateObject(Scripting.FileSystemObject) 설정
fso.FileExists(file)인 경우 다음
FSOExistsFile = true
또 다른
FSOExistsFile = 거짓
종료 조건
fso = 아무것도 설정하지 않음
기능 종료
Rem XML 이스케이프 문자
개인 함수 XMLStringEnCode(str)
str& =이면 XMLStringEnCode=:함수 종료
str = 바꾸기(str,<,<)
str = 바꾸기(str,>,>)
str = 바꾸기(str,',')
str = 바꾸기(str,,)
str = 바꾸기(str,&,&)
XMLStringEnCode = 문자열
기능 종료
Rem이 폴더를 생성합니다.
개인 함수 CreateDIR(byval LocalPath)
오류 발생 시 다음 재개
Dim i,FileObject,patharr,path_level,pathtmp,cpath
LocalPath = 바꾸기(로컬 경로,/,/)
FileObject = server.createobject(Scripting.FileSystemObject) 설정
patharr = 분할(로컬 경로,/)
path_level = UBound(patharr)
i = 0인 경우 path_level로
i=0이면
pathtmp=patharr(0) & /
또 다른
pathtmp = pathtmp & patharr(i) & /
종료 조건
cpath = 왼쪽(경로tmp,len(경로tmp)-1)
FileObject.FolderExists(cpath)가 아닌 경우
'Response.write cpath
FileObject.CreateFolder cpath
종료 조건
다음
FileObject = 없음 설정
err.number<>0이면
CreateDIR = 거짓
오류가 발생했습니다.지우기
또 다른
CreateDIR = 참
종료 조건
기능 종료
수업 종료
'캐시 설정
함수 SetCache(xmlFilePath,CacheTime,Conn,Sql)
캐시 설정=새 XmlCacheCls
캐시를 설정합니다.Conn=Conn
캐시.XmlFile=xmlFilePath
캐시.Sql=SQL
캐시.CacheTime=캐시시간
캐시.WriteDataToXml
캐시 설정 = 없음
기능 종료
'캐시 읽기
기능 ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)
캐시 설정=새 XmlCacheCls
캐시를 설정합니다.Conn=conn
캐시.XmlFile=xmlFilePath
캐시.Sql=SQL
캐시.읽기데이터
ReadCache=cache.SQLArr
ReadOn=cache.ReadOn
기능 종료
%>
사용 방법:
1 캐시 데이터를 xml로
암호:
다음과 같이 코드 코드를 복사합니다.
<!--#include 파일=Conn.asp-->
<!--#include 파일=Xml.asp-->
<%
캐시 설정=새 XmlCacheCls
캐시를 설정합니다.Conn=conn
캐시.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
캐시.Sql=tblProduction에서 상위 15개 prod_id,prod_name,prod_uptime을 선택합니다.
캐시.WriteDataToXml
%>
2 캐시된 데이터 읽기
암호:
다음과 같이 코드 코드를 복사합니다.
<!--#include 파일=Conn.asp-->
<!--#include 파일=Xml.asp-->
<%
캐시 설정=새 XmlCacheCls
캐시를 설정합니다.Conn=conn
캐시.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
캐시.Sql=tbl생산 순서에서 상위 15개 prod_id,prod_name,prod_uptime 선택 prod_id asc
캐시.읽기데이터
rsArray=cache.SQLArr
isArray(rsArray)이면
i=0에서 ubound(rsArray,2)까지
j=0에서 ubound(rsArray,1)까지
response.Write(rsArray(j,i)&<br><br>)
다음
다음
종료하면
%>캐시 시간, 기본 단위는 10분(초)입니다. 또한 직접 30분으로 설정할 수도 있습니다.