asp access数据库并生成XML文件范例

2018-09-06 10:58

阅读:554

  首先来看,ASP读取ACCESS数据库。
复制代码 代码如下:
<% @language=VBScript @codepage=65001%>
<%
开启显式变量声明
Option Explicit
设置输出类型
定义三个变量,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_List:mx.controls.List;
var my_XML:XML = new XML();
my_XML.load(
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_List.addEventListener(change, my_Object);

就这样,生成的XML文件就被导入进LIST里面了。通过监测函数,即可以调用数据。
学好这个,对于制作一些含后台的项目,比如相册、动态文章管理、播放器等就不难了。
制作一些需要加载外部文件的FLASH的时候,特别需要注意的是编码的问题。
首先,要注意,在同一个FLASH中,不要出现两次:“Codepage=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()、URLLoader、flash.net.URLStream 或 XML 类)的文本必须已使用 Unicode 编码格式保存,这样 Flash Player 才能将它识别为 Unicode。 若要使用 Unicode 对外部文件进行编码,请在支持 Unicode 的应用程序(例如,Windows 2000 上的“记事本”)中保存这些文件。
如果加载的外部文本文件不是 Unicode 编码格式,则应将 useCodePage 设置为 true。 在将加载数据的 SWF 文件的第一帧中,在最前面添加以下代码,使之成为第一行代码:
如果将 useCodePage 设置为 true,应注意:在运行播放器的操作系统的传统代码页中必须包括您的外部文本文件中使用的字符,这样才能显示文本。 例如,如果您加载了一个包含中文字符的外部文本文件,则这些字符不能显示在使用 CP1252 代码页的系统上,因为该代码页不包括中文字符。
为确保所有平台上的用户都能查看您的 SWF 文件中使用的外部文本文件,应将所有外部文本文件按 Unicode 进行编码,并保留 useCodePage 的 false 设置不变。 这样,Flash Player 6 和更高版本将按 Unicode 解释文本。


评论


亲,登录后才可以留言!