تعتمد هذه الفئة على فئة ذاكرة التخزين المؤقت لبيانات walkmanxml، وهي أكثر ملاءمة للاستخدام. مرحبًا بك للتواصل وإحراز التقدم على النحو التالي:
<%
فئة ذاكرة التخزين المؤقت XML
'------------------------------------------------ - ------------------
"يُرجى الاحتفاظ بمعلومات حقوق الطبع والنشر عند إعادة الطباعة
'المؤلف: ╰⑥月の雨╮
"الإصدار: الإصدار 1.0
"تستمد هذه الفئة دروسًا من فئة ذاكرة التخزين المؤقت لبيانات Walkmanxml، وهي أكثر ملاءمة للاستخدام. مرحبًا بك للتواصل وإحراز التقدم.
'------------------------------------------------ - ------------------
فئة XmlCacheCls
يجب أن يكون مصدر بيانات m_DataConn الخاص مفتوحًا
m_CacheTime الخاص 'وقت ذاكرة التخزين المؤقت، بالثواني، الافتراضي هو 10 دقائق
مسار xml الخاص بـ m_XmlFile، استخدم العنوان المطلق، ولا يلزم وجود ملحق
بيان SQL m_Sql الخاص
تم إرجاع صفيف البيانات الخاص m_SQLArr '(للقراءة فقط).
يقوم m_ReadOn الخاص '(للقراءة فقط) بإرجاع وضع القراءة 1-قاعدة البيانات 2-xml للكشف
'سمات الفصل ===========================================
"مصدر البيانات."
مجموعة الملكية العامة Conn(v)
قم بتعيين m_DataConn = v
نهاية الملكية
الملكية العامة احصل على كون
كون = m_DataConn
نهاية الملكية
"وقت التخزين المؤقت."
الملكية العامة تسمح لـ CacheTime(v)
m_CacheTime = v
نهاية الملكية
الملكية العامة احصل على CacheTime
CacheTime = m_CacheTime
نهاية الملكية
"مسار XML، استخدم العنوان المطلق."
السماح للملكية العامة بـ XmlFile(v)
m_XmlFile = v
نهاية الملكية
الملكية العامة GetXmlFile
XmlFile = m_XmlFile
نهاية الملكية
'بيان SQL
الملكية العامة دع 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() 'إصدار الفئة
نهاية الفرعية
'الطرق العامة للفئة ==============================================================
ريم يقرأ البيانات
وظيفة عامة قراءة البيانات
إذا كان FSOExistsFile(m_XmlFile) موجودًا، فاقرأ مباشرة من ملف XML
قراءة البيانات منXml
m_ReadOn=2
آخر
قراءة البيانات من قاعدة البيانات
m_ReadOn=1
نهاية إذا
وظيفة النهاية
Rem يكتب بيانات XML
الوظيفة العامة WriteDataToXml
إذا كان FSOExistsFile(m_XmlFile) ثم "الخروج مباشرة إذا لم تنته صلاحية XML."
إذا لم يكن XmlCacheExpired(m_XmlFile,m_CacheTime) ثم اخرج من الوظيفة
نهاية إذا
خافتات
com.Dimxmlcontent
خافت ك
xmlcontent=
xmlcontent = xmlcontent & <?xml version=1.0 encoding=gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
ك = 0
تعيين Rs = Server.CreateObject(Adodb.Recordset)
Rs.open m_sql,m_DataConn,1
بينما لا rs.eof
xmlcontent = xmlcontent & <item
لكل حقل في حقول rs
xmlcontent = xmlcontent & field.name & = & XMLStringEnCode(field.value) &
التالي
rs.movenext
ك=ك+1
xmlcontent = xmlcontent & </item> & vbnewline
ويند
rs. Close
سيترز = لا شيء
xmlcontent = xmlcontent & </root> & vbnewline
مسار المجلد الخافت
مسار المجلد = Trim(left(m_XmlFile,InstrRev(m_XmlFile,/)-1))
اتصل بـ CreateDIR(folderpath&) "إنشاء مجلد".
WriteStringToXMLFile m_XmlFile,xmlcontent
وظيفة النهاية
'الطرق الخاصة للفئة ============================================================================
يقرأ Rem البيانات من ملف Xml
وظيفة خاصة ReadDataFromXml
خافت SQLARR () "صفيف
خافت XmlDoc 'كائن XmlDoc
خافت objNode 'العقدة الفرعية
Dim ItemsLength 'طول العقدة الفرعية
Dim AttributesLength 'طول سمات العقدة الفرعية
تعيين XmlDoc=Server.CreateObject(Microsoft.XMLDOM)
XmlDoc.Async=خطأ
XmlDoc.Load(m_XmlFile)
قم بتعيين 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).قيمة العقدة
التالي
التالي
تعيين XmlDoc = لا شيء
m_SQLArr = SQLARR
وظيفة النهاية
Rem يقرأ البيانات من قاعدة البيانات
وظيفة خاصة ReadDataFromDB
خافتات
ديمSQLARR()
خافت ك
ك = 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(fieldi,k) = rs.Fields(fieldi).value
التالي
rs.movenext
ك=ك+1
ويند
نهاية إذا
rs. Close
سيترز = لا شيء
m_SQLArr = SQLArr
وظيفة النهاية
'الطرق الخاصة المساعدة للفئة ============================
Rem يكتب ملف XML
WriteStringToXMLFile الفرعي الخاص (اسم الملف، شارع)
خافت خ، تيسي
تعيين خ = createobject(scripting.filesystemobject)
إذا لم يكن IsObject(fs) ثم قم بالخروج من Sub
تعيين ts=fs.OpenTextFile(filename,2,True)
ts.writeline(شارع)
ts.إغلاق
تعيين نهاية الخبر = لا شيء
تعيين خ = لا شيء
نهاية الفرعية
يحدد Rem ما إذا كانت ذاكرة التخزين المؤقت لـ XML قد انتهت صلاحيتها
الوظيفة الخاصة هيXmlCacheExpired(ملف، ثواني)
ملف خافت في المرة الأخيرة
filelasttime = FSOGetFileLastModifiedTime(ملف)
إذا كانت إضافة التاريخ (الثواني، الثواني، الملف الأخير) < الآن ثم
isXmlCacheExpired = True
آخر
isXmlCacheExpired = خطأ
نهاية إذا
وظيفة النهاية
يحصل Rem على آخر وقت تعديل للملف
وظيفة خاصة FSOGetFileLastModifiedTime(ملف)
خافت fso، f، s
تعيين fso=CreateObject(Scripting.FileSystemObject)
تعيين f=fso.GetFile(ملف)
FSOGetFileLastModifiedTime = f.DateLastModified
تعيين و = لا شيء
تعيين fso = لا شيء
وظيفة النهاية
ملف ريم موجود
الوظيفة العامة FSOExistsFile (ملف)
خافت FSO
تعيين fso = Server.CreateObject(Scripting.FileSystemObject)
إذا كان fso.FileExists (ملف) إذن
FSOExistsFile = true
آخر
FSOExistsFile = false
نهاية إذا
تعيين fso = لا شيء
وظيفة النهاية
حرف الهروب Rem XML
الوظيفة الخاصة XMLStringEnCode(str)
إذا كانت str& = ثم XMLStringEnCode=:اخرج من الوظيفة
شارع = استبدال (شارع،<،<)
شارع = استبدال (شارع،>،>)
str = استبدال (str،'،')
شارع = استبدال (شارع،،)
شارع = استبدال (شارع،&،&)
XMLStringEnCode = str
وظيفة النهاية
Rem يقوم بإنشاء المجلد
وظيفة خاصة CreateDIR (byval LocalPath)
على خطأ استئناف التالي
Dim i,FileObject,patharr,path_level,pathtmp,cpath
LocalPath = استبدال (LocalPath،/،/)
تعيين FileObject = server.createobject(Scripting.FileSystemObject)
Patharr = سبليت (LocalPath،/)
path_level = UBound(patharr)
لأني = 0 إلى مستوى المسار
إذا كنت = 0 ثم
pathtmp=patharr(0) &/
آخر
pathtmp = pathtmp & patharr(i) & /
نهاية إذا
cpath = اليسار (pathtmp، لين (pathtmp) -1)
إذا لم يكن FileObject.FolderExists(cpath) ثم
'الاستجابة. اكتب cpath
FileObject.CreateFolder cpath
نهاية إذا
التالي
تعيين FileObject = لا شيء
إذا err.number<>0 ثم
CreateDIR = خطأ
خطأ. واضح
آخر
CreateDIR = صحيح
نهاية إذا
وظيفة النهاية
نهاية الفصل
"تعيين ذاكرة التخزين المؤقت."
وظيفة SetCache (xmlFilePath،CacheTime،Conn،Sql)
تعيين ذاكرة التخزين المؤقت = XmlCacheCls الجديد
تعيين ذاكرة التخزين المؤقت.Conn=Conn
Cache.XmlFile=xmlFilePath
Cache.Sql=Sql
Cache.CacheTime=CacheTime
ذاكرة التخزين المؤقت.WriteDataToXml
تعيين ذاكرة التخزين المؤقت = لا شيء
وظيفة النهاية
'اقرأ ذاكرة التخزين المؤقت
وظيفة ReadCache (xmlFilePath،Conn،Sql،ByRef ReadOn)
تعيين ذاكرة التخزين المؤقت = XmlCacheCls الجديد
تعيين ذاكرة التخزين المؤقت.Conn=conn
Cache.XmlFile=xmlFilePath
Cache.Sql=Sql
ذاكرة التخزين المؤقت. قراءة البيانات
ReadCache=cache.SQLArr
ReadOn=cache.ReadOn
وظيفة النهاية
%>
كيفية الاستخدام:
1 تخزين البيانات إلى ملف XML
شفرة:
انسخ رمز الكود كما يلي:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
تعيين ذاكرة التخزين المؤقت = XmlCacheCls الجديد
تعيين ذاكرة التخزين المؤقت.Conn=conn
Cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
Cache.Sql=حدد أفضل 15 منتجًا من نوع prod_id وprod_name وprod_uptime من tblProduction
ذاكرة التخزين المؤقت.WriteDataToXml
%>
2 قراءة البيانات المخزنة مؤقتا
شفرة:
انسخ رمز الكود كما يلي:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
تعيين ذاكرة التخزين المؤقت = XmlCacheCls الجديد
تعيين ذاكرة التخزين المؤقت.Conn=conn
Cache.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
Cache.Sql=حدد أعلى 15 منتجًا من prod_id,prod_name,prod_uptime من ترتيب tblProduction بواسطة prod_id asc
ذاكرة التخزين المؤقت. قراءة البيانات
rsArray=cache.SQLArr
إذا كان isArray(rsArray) إذن
لأني=0 إلى ubound(rsArray,2)
لـ j=0 إلى ubound(rsArray,1)
Response.Write(rsArray(j,i)&<br><br>)
التالي
التالي
نهاية إذا
%>وقت ذاكرة التخزين المؤقت، الوحدة الافتراضية هي 10 دقائق بالثواني، ويمكنك أيضًا ضبط ذاكرة التخزين المؤقت.CacheTime=60*30 30 دقيقة بنفسك