簡單asp載入access資料庫,並產生XML,然後再將XML資料載入進LIST元件範例學習。首先來看,ASP讀取ACCESS資料庫。
複製代碼代碼如下:
<% @language=VBScript @codepage=65001%>
<%
'開啟顯式變數聲明
Option Explicit
'設定輸出類型
Response.contentType=text/xml
'定義三個變量,conn(Connection物件)、connstr(ConnectionString)、sql(一個SQL語句)
dim conn,connstr,rs,sql,i
'定義ConnectionString的值
i=1
connstr=provider=Microsoft.Jet.OLEDB.4.0;data source=&Server.MapPath(test.mdb)&;
'建立伺服器連接對象
set conn=Server.CreateObject(ADODB.Connection)
'建立資料集對象
set rs=Server.CreateObject(ADODB.RecordSet)
'開啟資料連接
conn.open connstr
'本句的意思是到word資料表內依id欄位值的升序取出前100個song1name,dong1url欄位的值。值被附加到資料集物件上被當作資料集的屬性。
sql=select top 100 [song1name],[dong1url] from [test] order by id desc
'遊標類型和鎖定類型都設定為1,這是一個只能向前的唯讀行為,讀取速度最快
rs.open sql,conn,1,1
Response.Write(<?xml version='1.0' encoding='utf-8'?><淘沙網>)
'進行do while循環,條件循環到符合條件的最後一項
do while not rs.eof
'這是修改的部分,使輸出的檔案能夠被Flash中的LoadVars物件識別。
Response.Write(<歌曲資訊><歌名>&rs(song1name)&</歌名><地址>&rs(dong1url))&</地址></歌曲資訊>
'記錄下移
rs.movenext
i=i+1
'與do while呼應的loop方法,為主循環體
loop
Response.Write(</淘沙網>)
'將資料集物件關閉
rs.close
'將資料庫連線關閉
conn.close
'釋放資料集資源
set rs=nothing
'釋放資料庫連線資源
set conn=nothing
%>
這部分程式碼,就是讀取資料庫。
下面來看看是如何產生XML的呢,其實,就是在輸出的時候。加上XML的對應格式。例如<歌曲資訊>,以及各標籤等。一定要注意,每個標籤,一定要封閉。
這個xml.asp檔的全部程式碼如下:
下面,再看看,FLASH中如何載入的呢?
這裡面,應該很簡單了。
複製代碼代碼如下:
//定義元件
var my_TextArea:mx.controls.TextArea;
var my_List:mx.controls.List;
var my_XML:XML = new XML();
my_XML.load(http://www.taoshaw.com/taoshaw/study/accessAndList/xml.asp);
my_XML.onLoad = function(ok:Boolean) {
if (ok) {
for (i=0; i[td] my_List.addItem({label:this.firstChild.childNodes.childNodes[0].childNodes[0].nodeValue, data:this.firstChild.childNodes.childNodes[1].childNodes[ 0].nodeValue});
}
}
};
var my_Object:Object = new Object();
my_Object.change = function(eventObj:Object):Void {
my_TextArea.text += eventObj.target.selectedItem.label+/n;
};
my_List.addEventListener(change, my_Object);
就這樣,產生的XML檔就被導入進LIST裡面了。透過監測函數,即可以呼叫資料。
學好這個,對於製作一些含後台的項目,例如相簿、動態文章管理、播放器等就不難了。
製作一些需要載入外部文件的FLASH的時候,特別需要注意的是編碼的問題。
首先,要注意,在同一個FLASH中,不要出現兩次:System.useCodepage=true;
原本這句話的意思是將載入的外部非Utf-8格式的檔案的編碼轉換成uft-8格式的,而如果使用兩次,則一定會出錯的。
一般的合作方法就是,外部文件儲存的時候,要選擇uft-8這種編碼格式,或Gb2312這種格式。至於這兩種編碼的詳細差別,我目前還不太清楚,希望大家有明白的朋友,還指點一下在下。
ASP中的i 沒意思。可以去掉。貼出來部分的第26行,括號位置有錯。
另外樓主貼出來的AS中if(ok){}內的程式碼缺了一部分吧。 for迴圈不完整。
複製代碼代碼如下:
useCodePage 屬性
useCodePage:Boolean [read-write]
語言版本: ActionScript 3.0
Player 版本: Flash Player 9
一個布林值,它告訴Flash Player 使用哪個代碼頁來解釋外部文字檔。 當該屬性設定為false 時,Flash Player 使用Unicode 解釋外部文字檔案。 (儲存這些檔案時,必須使用Unicode 對其進行編碼。) 當該屬性設為true 時,Flash Player 使用執行播放器的作業系統的傳統代碼頁來解釋外部文字檔案。 useCodePage 的預設值是false。
以外部檔案載入(使用flash.display.Loader.load()、flash.net.URLLoader、flash.net.URLStream 或XML 類別)的文字必須已使用Unicode 編碼格式儲存,這樣Flash Player 才能將它識別為Unicode 。 若要使用Unicode 對外部檔案進行編碼,請在支援Unicode 的應用程式(例如,Windows 2000 上的記事本)中儲存這些檔案。
如果載入的外部文字檔案不是Unicode 編碼格式,則應將useCodePage 設為true。 在將載入資料的SWF 檔案的第一幀中,在最前面添加以下程式碼,使之成為第一行程式碼:
System.useCodePage = true;有了這一行程式碼,Flash Player 將使用執行Flash Player 的作業系統的傳統代碼頁來解釋外部文字。 對於英文Windows 作業系統,程式碼頁通常為CP1252;對於日文作業系統,程式碼頁通常為Shift-JIS。 如果將useCodePage 設為true,則Flash Player 6 和更高版本處理文字的方式與Flash Player 5 相同。 (Flash Player 5 將所有文字視為按執行播放器的作業系統的傳統代碼頁編碼的文字。)
如果將useCodePage 設為true,應注意:在運行播放器的作業系統的傳統代碼頁中必須包含您的外部文字檔案中使用的字符,這樣才能顯示文字。 例如,如果您載入了一個包含中文字元的外部文字文件,則這些字元不能顯示在使用CP1252 代碼頁的系統上,因為該代碼頁不包括中文字元。
為確保所有平台上的使用者都能查看您的SWF 檔案中使用的外部文字文件,應將所有外部文字檔案按Unicode 進行編碼,並保留useCodePage 的false 設定不變。 這樣,Flash Player 6 和更高版本將按Unicode 解釋文本。