Flash读取数据库中的数据

 Flash读取数据库中的数据

要读取数据库的记录,首先需要建立一个数据库,并输入一些数据。数据库建立完毕后,由Flash向ASP提交请求,ASP根据请求对数据库进行操作后将结果返回给Flash,Flash以某种方式把结果显示出来。

1.启动Access2003,新建一名为“userInfo.mdb”的数据库,并在该数据库中新建一名为“userInfoTable”的表,该表中含有三个字段:“userName”、“passWord”和“level”,分别表示“用户名”、“密码”和“等级”,字段类型均为“文本”。

2.在“userInfoTable”表中输入数据。如图1所示。数据输入完毕后,关闭数据库,并将其保存到IIS主目录(D盘下的“myWEB”文件夹)下的“getDataFromDataBase”文件夹内。

http://blog.5d.cn/user6/xbzg/upload/2007-06/20076252057291.jpg

图1“userInfoTable”表中的数据

3.单击Access2003工具栏中的【打开】按钮,在弹出的【打开】对话框中选中刚刚建立的数据库“userInfo.mdb”,然后单击【打开】对话框右下角【打开】按钮右侧的下拉按钮,选择【以独占方式打开】重新打开数据库。如图2所示。

http://blog.5d.cn/user6/xbzg/upload/2007-06/2007625205903.jpg

图2 以独占方式打开数据库

4.单击Access2003菜单栏中的【工具】|【安全】|【设置数据库密码】,在弹出的【设置数据库密码】对话框中为该数据库设置密码,如“123”,设置完毕后单击【确定】按钮退出并关闭Access2003。如图3所示。

http://blog.5d.cn/user6/xbzg/upload/2007-06/2007625205902.jpg

图3 设置数据库密码

5. 打开Windows 2003附件中的“记事本”程序,并输入以下代码:

<%

'创建Connection对象

Set conn =Server.CreateObject("Adodb.Connection")

'设置驱动

tmpPD="Provider=Microsoft.Jet.OLEDB.4.0"

'指定数据库的路径

tmpDS="Data Source="&Server.MapPath("userInfo.mdb")

'指定数据库的密码

tmpPW="Jet OLEDB:Database Password=123"

'构造打开字符串

tmpSTR=tmpPD&";"&tmpDS&";"&tmpPW

'利用Connection对象的Open方法打开数据库

conn.Open tmpSTR

'建立库连接

Set rs = Server.CreateObject("Adodb.Recordset")

'SQL语句,从数据表userInfoTable中读出所有数据,并根据ID进行反向排列

sql = "select * from userInfoTable order by id desc"

'打开从库中读出的记录集

rs.Open sql, conn, 1, 3

 'While 循环语句,这里是条件,当记录集没有空时,执行后边的语句

While Not rs.EOF

    '从表中读取userName、passWord和level列的值,并将其赋予三个变量

    userName = rs("userName")

    passWord = rs("passWord")

    level = rs("level")

    '将获取的值输出并用"#"隔开

    response.Write userName

    response.Write "#"

    response.Write passWord

    response.Write "#"

    response.Write level

    '转到下一条记录前用"###"隔开,以便在Flash中处理

    response.Write "###"

    '到下一条记录

    rs.MoveNext  

Wend

'利用Connection对象的Close方法关闭连接

rs.Close

'将Connection对象从内存中删除,以释放资源

Set rs = Nothing

Set conn = Nothing

%>

注意,输入上面的标点符号时输入法要切换到英文状态。

6.将该文件另存为“displayUserInfo.asp”,并拷贝到“D:\myWEB\ getDataFromDataBase”下,使其与上面的“userInfo.mdb”在同一文件夹下。

7.打开Flash,选择【File】|【New】命令,在弹出的【New Document】对话框中选择文档类型为【Flash File(ActionScript 3.0)】,单击【OK】按钮,新建一个Flash文档。然后将其保存到IIS主目录(D盘下的“myWEB”文件夹)下的“getDataFromDataBase”文件夹,并命名为“getDataFromDataBase.fla”。

8.选择【File】|【New】命令,在弹出的【New Document】对话框中选择文档类型为【ActionScript File】,单击【OK】按钮,新建一个Flash脚本文档,然后将该Flash脚本文档同样保存到“D:\myWEB\getDataFromDataBase”下,并命名为“getDataFromDataBase.as”,使其与上面的“getDataFromDataBase.fla”、“displayUserInfo.asp”和“userInfo.mdb”在同一文件夹下。

9.切换到“getDataFromDataBase.fla”文档,选择【Ctrl+F7】组合键打开【Components】面板,展开【User Interface】树形菜单,拖动一个DataGrid组件到场景中,然后将其删除。按下【Ctrl+L】组合键打开【Library】面板查看,确保DataGrid组件已存在于库中。在“getDataFromDataBase.fla”的属性面板中设置其【Document class】为“getDataFromDataBase”,然后在“getDataFromDataBase.as”脚本文档中输入下列代码并保存:

package {

         //导入文件运行所需的类

         import flash.display.*;

         import flash.text.*;

         import flash.net.*;

         import flash.events.*;

         import flash.errors.*;

         import flash.system.*;

         //导入DataGrid组件

         import fl.controls.DataGrid;

         //导入DataProvider类

         import fl.data.DataProvider;

         public class getDataFromDataBase extends Sprite {

                   //定义显示返回信息的文本框

                   private var returnInfoTxt:TextField;

                   //定义临时字符串接收返回数据

                   private var tmpString:String;

                   //定义临时数组接收返回数据

                   private var tmpArray:Array;

                   //定义临时字符串

                   private var tmpName:String;

                   private var tmpPassWord:String;

                   private var tmpLevel:String;

                   private var myDataGrid:DataGrid;

                   //定义ASP文件路径

                   private var aspPath:String;

                   //定义URLRequest和URLLoader对象

                   private var aspRequest:URLRequest;

                   private var aspLoader:URLLoader;

                   //构造函数

                   public function getDataFromDataBase() {

                            init();

                            startLoad();

                   }

                   //在场景中添加文本框

                   private function init() {

                            //设置编码,不然会显示乱码

                            System.useCodePage=true;

                            returnInfoTxt= createTextField(200,200, 100, 20);

                            returnInfoTxt.type = TextFieldType.DYNAMIC;

                            returnInfoTxt.border=false;

                            returnInfoTxt.text = "正在载入数据...";

                            //添加DataGrid组件

                            myDataGrid=new DataGrid();

                            myDataGrid.x=100;

                            myDataGrid.y=100;

                            myDataGrid.width=300;

                            addChild(myDataGrid);

                   }

                   //载入函数

                   private function startLoad() {

                            aspPath="http://127.0.0.1/getDataFromDataBase/displayUserInfo.asp?randomNum="+Math.random();

                            aspRequest=new URLRequest(aspPath);

                            aspLoader=new URLLoader();

                            configureListeners(aspLoader);

                            try {

                                     aspLoader.load(aspRequest);

                            } catch (error:Error) {

                                     returnInfoTxt.text="加载ASP文件失败";

                            }

                   }

                   //分派侦听事件

                   private function configureListeners(dispatcher:IEventDispatcher):void {

                            dispatcher.addEventListener(Event.COMPLETE,aspLoadComplete);

                            dispatcher.addEventListener(IOErrorEvent.IO_ERROR,aspLoadError);

                   }

                   //ASP载入结束时的处理

                   private function aspLoadComplete(event:Event):void {

                            returnInfoTxt.text = "载入数据结束...";

                            tmpString=event.target.data;

                            tmpArray=new Array();

                            tmpArray=tmpString.split("###");

                            tmpArray.pop()

                            //添加DataProvider

                            var tmpDP:DataProvider = new DataProvider();

                            for (var i=0; i<tmpArray.length; i++) {

                                     tmpName=tmpArray[i].split("#")[0];

                                     tmpPassWord=tmpArray[i].split("#")[1];

                                     tmpLevel=tmpArray[i].split("#")[2];

                                     tmpDP.addItem({等级:tmpLevel,姓名:tmpName,密码:tmpPassWord});

                            }

                            myDataGrid.dataProvider=tmpDP

                   }

                   //ASP载入错误时的处理

                   private function aspLoadError(event:IOErrorEvent):void {

                            returnInfoTxt.text="加载ASP文件失败";

                   }

                   //生成文本框函数

                   private function createTextField(x:Number, y:Number, width:Number, height:Number):TextField {

                            var tmpTxtFld:TextField = new TextField();

                            tmpTxtFld.x = x;

                            tmpTxtFld.y = y;

                            tmpTxtFld.width = width;

                            tmpTxtFld.height = height;

                            tmpTxtFld.background = true;

                            tmpTxtFld.border = true;

                            addChild(tmpTxtFld);

                            return tmpTxtFld;

                   }

         }

}

10.按下【Ctrl+Enter】组合键,在“getDataFromDataBase.swf”窗口的DataGrid组件中将看到从数据库中读取的数据。如图4所示。

http://blog.5d.cn/user6/xbzg/upload/2007-06/2007625205901.jpg

图4 运行结果

从上面的“displayUserInfo.asp”可以看到,利用ASP与数据库通讯的一般步骤可以分为:

1.设置驱动和数据库的路径

2.创建Connection对象

3.利用Connection对象的Open方法打开指定的数据库

4.进行读写操作

5.输出结果

6.关闭数据库,释放内存

其中的第1、2、3、5步格式基本是固定不变的,与Flash密切相关的是第4步和第5步。在本例中,ASP读取数据的方法是:

userName = rs("userName")

passWord = rs("passWord")

level = rs("level")

其中等号后面的userName、passWord和level是数据库中的字段名,等号前面的userName、passWord和level是变量,rs("userName")、rs("passWord")和rs("level")是取出该字段名下的值,然后将该值赋予等号前面的变量。

代码中的rs是由:

Set rs = Server.CreateObject("Adodb.Recordset")

设定的,如果:

Set myRs = Server.CreateObject("Adodb.Recordset")

则ASP读取数据时的方法应改为:

userName = myRs ("userName")

passWord = myRs ("passWord")

level = myRs ("level")

在输出数据时,每一条数据用"###"隔开,每一条数据中的每一个数据用“#”隔开,这样做在Flash中分析数据就简单多了。

在“getDataFromDataBase.as”脚本文档中,aspPath后多了一个Math.random(),这样做可以保证Flash每次载入ASP的路径不同,以免由于IE缓存造成数据得不到及时刷新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/242542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink基础概念之什么是时间语义

什么是时间语义 Flink支持三种不同的时间语义&#xff0c;以便处理流式数据中的事件时间、处理时间和摄入时间。 1. 处理时间&#xff08;Processing Time&#xff09; 处理时间的概念非常简单&#xff0c;就是指执行处理操作的机器的系统时间。 在这种时间语义下处理窗口非…

算法练习-替换数字(思路+流程图+代码)

难度参考 难度&#xff1a;简单 分类&#xff1a;字符串 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个字符串S,它包含小写字母和数字字符&#xff0…

图论:最短路(dijkstra算法、bellman算法、spfa算法、floyd算法)详细版

终于是学完了&#xff0c;这个最短路我学了好几天&#xff0c;当然也学了别的算法啦&#xff0c;也是非常的累啊。 话不多说下面看看最短路问题吧。 最短路问题是有向图&#xff0c;要求的是图中一个点到起点的距离&#xff0c;其中我们要输入点和点之间的距离&#xff0c;来求…

2024年【金属非金属矿山(地下矿山)安全管理人员】证考试及金属非金属矿山(地下矿山)安全管理人员模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员】证考试及金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员模拟考试题库&#xff0c;包含金属非金属矿山&#xff08;地下矿山&…

Spring DI

目录 什么是依赖注入 属性注入 构造函数注入 Setter 注入 依赖注入的优势 什么是依赖注入 依赖注入是一种设计模式&#xff0c;它通过外部实体&#xff08;通常是容器&#xff09;来注入一个对象的依赖关系&#xff0c;而不是在对象内部创建这些依赖关系。这种方式使得对象…

复现PointNet++(语义分割网络):Windows + PyTorch + S3DIS语义分割 + 代码

一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1 cu111 所用的原始代码&#xff1a;https://github.com/yanx27/Pointnet_Pointnet2_pytorch 二、数据 Stanford3dDataset_v1.2_Aligned_Version 三、代码 分享给有需要的人&#xf…

wsl利用netsh端口转发实现http代理

1、端口转发 netsh interface portproxy add v4tov4 listenaddress192.168.1.102 listenport10086 connectaddress127.0.0.1 connectport99992 端口检查 上面命令执行完成后&#xff0c;检查命令是否执行成功 netsh interface portproxy show all检查端口是否正常监听 nets…

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 functi…

LLM:ALiBi - 给注意力加上线性偏置

论文&#xff1a;https://arxiv.org/pdf/2108.12409.pdf 代码&#xff1a;https://github.com/ofirpress/attention_with_linear_biases 发表&#xff1a;2021 长度外推 参考&#xff1a;https://spaces.ac.cn/archives/9431#ALIBI 长度外推性是一个训练和预测的长度不一致…

HTML+JavaScript-01

说明 之前有一篇JavaWeb-JavaScript中只是简单介绍了一点JavaScript的内容&#xff0c;这篇笔记算是续写的&#xff0c;但是从01开始编号。 引入js文件 html、css、js俗称前端三剑客&#xff0c;一般都是分开写&#xff0c;先写框架、再写css、最后写js。因此在工程量大的情…

设计模式——装饰者模式

更多内容&#xff0c;前往 IT-BLOG 现实生活中常常需要给某类产品动态增加新的功能&#xff0c;如&#xff1a;给面条各种调味品。在软件开发过程中&#xff0c;有时想用一些现存的组件。这些组件可能只是完成一些核心功能。但在不改变其架构的情况下&#xff0c;可以动态地扩展…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM &#xff08;Document Object Model&#xff09;的全称是文档对象模型&#xff0c;它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

【数学建模】图论模型

文章目录 图的基础理论及networkx简介图的基本概念图的表示及Networkx简介图的表示NetworkX简介 最短路算法及其Python实现固定起点到其余各点的最短路算法每对顶点间的最短路算法最短路应用 最小生成树算法及其networkx实现基本概念最小生成树算法最小生成树应用 匹配问题最大…

Qt5.15.2中加入图片资源

系列文章目录 文章目录 系列文章目录前言一、加入图片资源二、代码 前言 以前用的Qt5.15.2之前的版本&#xff0c;QtCreator默认的工程文件是*.pro&#xff0c;现在用5.15.2创建工程默认的工程文件是CMameList.txt,当然在创建项目时&#xff0c;仍然可以使用pro工程文件用QtCr…

13.浮动面板(PaletteSet)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在CAD中进行通用组件开发或常驻界面的控件开发时&#xff0c;可使用PaletteSet作为停靠面板&#xff0c;然后将自己的空间放入其中。 1.示例 SearchRe…

web terminal - 如何在mac os上运行gotty

gotty可以让你使用web terminal的方式与环境进行交互&#xff0c;实现终端效果 假设你已经配置好了go环境&#xff0c;首先使用go get github.com/yudai/gotty命令获取可执行文件&#xff0c;默认会安装在$GOPATH/bin这个目录下&#xff0c;注意如果你的go版本比较高&#xff…

小程序系列--10.小程序WXS 脚本

一、概述 1. 什么是 wxs&#xff1f; WXS&#xff08;WeiXin Script&#xff09;是小程序独有的一套脚本语言&#xff0c;结合 WXML&#xff0c;可以构建出页面的结构。 2. wxs 的应用场景 wxml 中无法调用在页面的 .js 中定义的函数&#xff0c;但是&#xff0c;wxml 中可…

Ceph应用

目录 1.资源池Pool管理 创建一个Pool资源池 查看集群Pool信息 查看资源池副本的数量 查看PG和PGP数量 修改pg_num和pgp_num的数量 修改Pool副本数量 删除Pool资源池 2.创建CephFS文件系统MDS接口 服务端操作(192.168.88.22) 1.在管理节点创建 mds 服务 2.查看各个节…

JUC并发编程知识点总结

JMM Java内存模型规定所有的变量都存储在主内存中&#xff0c;包括实例变量&#xff0c;静态变量&#xff0c;但是不包括局部变量和方法参数。每个线程都有自己的工作内存&#xff0c;线程的工作内存保存了该线程用到的变量和主内存的副本拷贝&#xff0c;线程对变量的操作都在…

智篆商业土豆老师:引领电商运营新潮流

智篆商业的土豆老师不仅是电商运营的专家&#xff0c;更是引领电商运营新潮流的先锋。他时刻关注电商行业的发展动态&#xff0c;深入研究新兴技术和市场趋势&#xff0c;不断探索电商运营的新模式和新思路。 土豆老师认为&#xff0c;未来的电商运营将更加注重个性化和精细化…