六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用XML數(shù)據(jù)島處理用戶界面問(wèn)題 - 3

[摘要]把數(shù)據(jù)庫(kù)的表數(shù)據(jù)保存到文件中  我曾答應(yīng)向你展示如何避免每次請(qǐng)求都要讀取數(shù)據(jù)庫(kù)和串聯(lián)成XML字符串的步驟。答案就是把數(shù)據(jù)庫(kù)的表數(shù)據(jù)保存到文件中;這樣做有幾個(gè)好處。讀取文件比查詢(xún)數(shù)據(jù)庫(kù)并把記錄集格式化...
把數(shù)據(jù)庫(kù)的表數(shù)據(jù)保存到文件中

  我曾答應(yīng)向你展示如何避免每次請(qǐng)求都要讀取數(shù)據(jù)庫(kù)和串聯(lián)成XML字符串的步驟。答案就是把數(shù)據(jù)庫(kù)的表數(shù)據(jù)保存到文件中;這樣做有幾個(gè)好處。讀取文件比查詢(xún)數(shù)據(jù)庫(kù)并把記錄集格式化成XML要快。這樣做也可以簡(jiǎn)化你的HTML文件,因?yàn)槟阒恍柙贖TML中包含對(duì)XML的引用。最后這樣做使數(shù)據(jù)對(duì)于客戶端來(lái)說(shuō)是透明的。如果你以Listing 1中的方式發(fā)送XML標(biāo)記符的話,用戶可以通過(guò)IE的"查看/源文件"看到數(shù)據(jù)。使用文件引用的話,用戶只能看到引用標(biāo)記符,而非數(shù)據(jù)。

  只要你的數(shù)據(jù)庫(kù)記錄不是永不改變的,你就還得在數(shù)據(jù)改變時(shí)查詢(xún)數(shù)據(jù)庫(kù)。例如,你可以在SQL Server中寫(xiě)一個(gè)觸發(fā)器,當(dāng)"Location"表發(fā)生改變時(shí)更新"LastChanged"表中的日期和時(shí)間(Listing 3)。對(duì)于每一次請(qǐng)求,你可以比較
Location"表與保存數(shù)據(jù)的XML文件的日期和時(shí)間。本文使用的Access數(shù)據(jù)庫(kù)不支持觸發(fā)器,但你可以編寫(xiě)代碼來(lái)實(shí)現(xiàn)當(dāng)"Location"表發(fā)生改變時(shí)更新"LastChanged"表的功能。你也可以每隔一段時(shí)間,如一天或一個(gè)小時(shí)就重新生成文件。

  用Scripting.FileSystemObject 和 Scripting.TextStream對(duì)象寫(xiě)XML文件到硬盤(pán)中。為了能寫(xiě)XML文件,你必須給IUSR_MACHINENAME匿名用帳戶足夠的權(quán)限以打開(kāi)、讀、寫(xiě)和刪除文件(如果你使用的是NTFS格式的分區(qū)硬盤(pán)的話)。如果你只想利用XML數(shù)據(jù)重新在客戶端建立一個(gè)記錄集的話,你可以用adPersistXML方法保存記錄集到硬盤(pán)中。如果你這樣做的話,必須注意ADO為了能從XML數(shù)據(jù)重新建立記錄集而把記錄集保存成優(yōu)化的格式。這樣生成的XML對(duì)于XSL查詢(xún)語(yǔ)句而言即
不美觀又不方便:

  Dim fs

  Dim ts

  dim aFilename

  aFilename = Server.MapPath _("/XMLDataIslands") & _"\locations.xml"

  set fs = Server.CreateObject _("Scripting.FileSystemObject")

  set ts = fs.OpenTextFile _(aFilename, ForWriting)

  ts.Write s

現(xiàn)在,當(dāng)你收到一個(gè)請(qǐng)求時(shí),查看"LastChanged"表中日期和時(shí)間:

  Dim SQL

  Dim R

  Dim conn

  dim tableModifyDate

  set conn = Server.CreateObject _("ADODB.Connection")

  conn.mode = adModeRead

  conn.open "DSN=CheapPC;UID=sa;PWD="

  SQL = "SELECT " & _"LastChanged.LastChanged " & _"FROM Locations WHERE " & _"Tablename='Locations'"

  set R = conn.execute(SQL,,adCmdText)

  tableModifyDate = R("LastChanged")

接下來(lái),通過(guò)獲取一個(gè)File對(duì)象來(lái)比較XML文件與tableModifyDate的日期和時(shí)間,并查看它的FileCreatedOn屬性值:

  dim fs

  dim aFile

  dim rewriteFile

  rewriteFile=False

  set fs = Server.CreateObject _("Scripting.FileSystemObject")

  if fs.FileExists(aFilename) then

    Set aFile = fs.GetFile(aFilename)

    If aFile.DateCreated < _LocationsModifiedDate Then

     rewriteFile=True

    end if

  else

    rewriteFile=true

  end if
  如果XML文件不存在或需要更新時(shí),你必須寫(xiě)文件(Listing 4)。這樣就重新從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)并格式化成XML,但你只需覆蓋舊的XML文件而不必把XML發(fā)送到瀏覽器。現(xiàn)在在你的HTML文件中,你只需引用該XML文件即可。當(dāng)你的XML文件不需要更新,你的服務(wù)器會(huì)略過(guò)數(shù)據(jù)的讀取與格式化,只是簡(jiǎn)單地讀取XML數(shù)據(jù)到瀏覽器。從整體上看,讀取XML數(shù)據(jù)為你的服務(wù)器節(jié)省了大量的處理能力,使你的頁(yè)面更有效率。


源代碼可以從http://www.yesky.com/34670816/xmldaima.zip下載




主站蜘蛛池模板: 亚洲人与牲动交xxxxbbbb | 日本国产一区在线观看 | 日韩中文字幕免费 | 日韩精品视频免费在线观看 | 欧美怡红院免费的全部视频 | 伊人网视频 | 午夜狠狠干 | 日韩在线视频导航 | 欧美手机视频 | 四虎私人影院 | 亚洲成a人v在线观看 | 天天干天天操天天插 | 五级毛片 | 日本高清网站 | 三级视频欧美 | 日韩亚洲制服丝袜中文字幕 | 一级一片一a一片 | 午夜精品久久久久久中宇 | 日韩一区二区三区不卡视频 | 三级黄色在线免费观看 | 欧美一级特黄一片免费 | 日韩亚洲视频 | 午夜视频网址 | 探花视频免费播放观看 | 伊人久久精品 | 最新精品亚洲成a人在线观看 | 午夜高清视频在线观看 | 手机看片亚洲 | 在线免费h视频 | 五月天天色 | 日日拍夜夜拍 | 无极色影院 | 亚洲视频欧洲视频 | 欧美在线高清视频播放免费 | 在线观看国产日韩 | 亚洲色无码播放 | 亚洲欧美视频在线 | 综合久久久久综合体桃花网 | 亚洲人成网站999久久久综合 | 日韩中文字幕精品一区在线 | 最新在线观看精品国产福利片 |