当前位置: 首页 > news >正文

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缓存造成数据得不到及时刷新。

相关文章:

Flash读取数据库中的数据

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

如何写出规范优雅的代码

编码规范是成为一个优质程序员的重要一课&#xff0c;它是编程的样式的模板。这篇文章将介绍12中编程规范及技巧&#xff0c;相信学习之后你的代码一定会提升一个档次。 首先我们要明确&#xff0c;为什么要遵循编码规范&#xff1f;遵循这样的约定有什么好处&#xff1f; 遵循…...

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…...

14027.ptp 控制流

文章目录 1 ptp 控制流1.1 控制流分层 1 ptp 控制流 1.1 控制流分层 大体分为4层&#xff1a;1 ptp4l层&#xff1a; 获取配置文件、创建时钟、poll监控文件描述符。2 clock时钟层&#xff1a;提供提供clock_poll、clock_create、clock_sync 等3 port 端口层&#xff1a;port…...

【昕宝爸爸小模块】深入浅出之为什么POI的SXSSFWorkbook占用内存更小

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…...

CentOS安装Flume

CentOS安装Flume 一、简介二、安装1、下载2、解压3、创建配置文件4、启动flume agent5、验证 一、简介 Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexi…...

Qt 多次绘图

使用Qt 的时候发现&#xff1a; 背景&#xff1a;自己定义一个类&#xff0c;把它和某个ui文件绑定。(类似 Qt creator 默认创建的工程&#xff09;问题&#xff1a;当鼠标在窗口内单击的时候会触发2次绘图。&#xff1f;难道不应该是一次吗&#xff1f; 于是开始了如下的测试…...

设计模式介绍

概念&#xff1a; 设计模式是一套被反复使用的、多数人知晓、经过分类编目的优秀代码设计经验的总结。特定环境下特定问题的处理方法。 1&#xff09;重用设计和代码 重用设计比重用代码更有意义&#xff0c;自动带来代码重用 2&#xff09;提高扩展性 大量使用面向接口编程&…...

linux 之 ln 命令

linux 之 ln 命令 在Linux中&#xff0c;ln 命令用于创建文件或目录的链接。它有两种主要类型的链接。 硬链接&#xff08;Hard Links&#xff09; 硬链接实际上是原始文件的另一个引用&#xff0c;指向同一个inode&#xff08;索引节点&#xff09;&#xff0c;这意味着它们共…...

【设计模式】张一鸣笔记:责任链接模式怎么用?

我将通过一个贴近现实的故事——请假审批流程&#xff0c;带你了解和掌握责任链模式。 什么是责任链模式&#xff1f; 责任链模式是一种行为设计模式&#xff0c;它让你可以避免将请求的发送者与接收者耦合在一起&#xff0c;让多个对象都有处理请求的机会将这个对象连成一条…...

Vulnhub-dc4

靶场下载 https://download.vulnhub.com/dc/DC-4.zip 信息收集 判断目标靶机的存活地址: # nmap -sT --min-rate 10000 -p- 192.168.1.91 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 16:36 CST Stats: 0:00:03 elapsed; 0 hosts completed (1 up…...

MySQL45道练习题

作业需要数据表SQL语句已给 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 select * from Student RIGHT JOIN (select t1.SId, class1, class2 from(select SId, score as class1 from sc where sc.CId 01)as t1, (select SId, score as …...

HTML5和CSS3的新特性

HTML5的新特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等 1&#xff0c;HTML5新增的语义化标签 <header> 头部标签 <nav> 导航标签 <article> …...

【MySQL】表列数和行大小限制详解

目录 限制维度 列数量限制 表的最大行大小 单个列的存储要求 存储引擎的附加限制 功能键部分 行容量限制 MySQL表的内部实现 InnoDB表的最大行大小 超出InnoDB最大行大小的处理 不同存储格式的影响 限制示例 行大小限制示例 InnoDB下 MyISAM下 InnoDB变长情况示…...

算法基础学习|双指针算法

双指针算法 代码模板 for (int i 0, j 0; i < n; i ){while (j < i && check(i, j)) j ;// 具体问题的逻辑 } 常见问题分类&#xff1a;(1) 对于一个序列&#xff0c;用两个指针维护一段区间(2) 对于两个序列&#xff0c;维护某种次序&#xff0c;比如归并…...

4.远程登录服务

目录 1. 简介 1.1. 概念 1.2. 功能: 1.3. 分类 1.3.1. 文字接口: 1.3.2. 图形接口&#xff1a; 1.4. 文字接口连接服务器: 2. 连接加密技术简介 2.1. 密钥解析&#xff1a; 3. SSH工作过程&#xff1a; 3.1. 版本协商阶段 3.2. 密钥和算法协商阶段 3.3. 认证阶段(两…...

代码随想录算法训练营第二十九天| 491.递增子序列、46.全排列、47.全排列 II

491.递增子序列 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 解题思路&#xff1a;同层相同元素要跳过 java&#xff1a; class Solution {List<List<Integer>> resultnew ArrayList<>();List<Integ…...

基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(五)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…...

多场景建模:阿里多场景多任务元学习方法M2M

multi-scenario multi-task meta learning approach (M2M) 背景 广告领域大部分是针对用户建模的&#xff0c;像点击率预估&#xff0c;很少有针对广告主需求建模&#xff08;广告消耗预估、活跃率/流失率预估、广告曝光量预估&#xff09;&#xff0c;广告的类型较多&#x…...

仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

文章目录 前言机器人简介机器人应用与前景机器人形态机器人的构成 ROS基础ROS的作用和特点ROS的运行机制ROS常用命令 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容是我为复试准备的第二个项目 &#x1f4ab;欢迎…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...