首页 > 编程 > ASP > 正文

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

2024-05-04 11:08:56
字体:
来源:转载
供稿:网友
简单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 解释文本。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表