网站优化网站,推荐武进网站建设,高大上的自助建站网站,网站建设包括哪几个方面14.5 Flash查询和添加数据库数据
在Flash与数据库通讯的实际应用中#xff0c;如何实现用户的登录与注册是经常遇到的一个问题。登录实际上就是ASP根据Flash提供的数据查询数据库的过程#xff0c;而注册则是ASP将Flash提供的数据写入数据库的过程。
1.启动Access2003…14.5 Flash查询和添加数据库数据
在Flash与数据库通讯的实际应用中如何实现用户的登录与注册是经常遇到的一个问题。登录实际上就是ASP根据Flash提供的数据查询数据库的过程而注册则是ASP将Flash提供的数据写入数据库的过程。
1.启动Access2003新建一名为“userInfo.mdb”的数据库并在该数据库中新建一名为“userInfoTable”的表该表中含有三个字段“userName”、“passWord”和“level”分别表示“用户名”、“密码”和“等级”字段类型均为“文本”。
2.在“userInfoTable”表中输入数据。如图14-5-1所示。数据输入完毕后关闭数据库并将其保存到IIS主目录(D盘下的“wwwroot”文件夹)下的“loginAndRegiste”文件夹内。 图14-5-1 “userInfoTable”表中的数据
3.以独占方式重新打开刚刚建立的数据库“userInfo.mdb”为该数据库设置密码如“123”设置完毕后退出并关闭Access2003。
4.在该文件夹下新建一名为“login.asp”的文件并输入以下代码后保存
%
获取从Flash提交的数据
tmpUserNameRequest(userName)
tmpPassWordRequest(passWord)
SQL语句中的用户名和密码需要用单引号括起来
tmpUserNametmpUserName
tmpPassWordtmpPassWord
创建Connection对象
Set conn Server.CreateObject(Adodb.Connection)
设置驱动
tmpPDProviderMicrosoft.Jet.OLEDB.4.0
指定数据库的路径
tmpDSData SourceServer.MapPath(userInfo.mdb)
指定数据库的密码
tmpPWJet OLEDB:Database Password123
构造打开字符串
tmpSTRtmpPD;tmpDS;tmpPW
利用Connection对象的Open方法打开数据库
conn.Open tmpSTR
建立库连接
Set rs Server.CreateObject(Adodb.Recordset)
SQL语句,从数据表userInfoTable中查询与Flash提交的用户名和密码一致的记录
sql select * from userInfoTable where userNametmpUserName and passWordtmpPassWord
打开从库中读出的记录集
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
%
5.在该文件夹下再建一名为“registe.asp”的文件输入以下代码后保存
%
获取从Flash提交的数据
tmpUserNameRequest(userName)
tmpPassWordRequest(passWord)
SQL语句中的用户名和密码需要用单引号括起来
tmpUserNameStrtmpUserName
创建Connection对象
Set conn Server.CreateObject(Adodb.Connection)
设置驱动
tmpPDProviderMicrosoft.Jet.OLEDB.4.0
指定数据库的路径
tmpDSData SourceServer.MapPath(userInfo.mdb)
指定数据库的密码
tmpPWJet OLEDB:Database Password123
构造打开字符串
tmpSTRtmpPD;tmpDS;tmpPW
利用Connection对象的Open方法打开数据库
conn.Open tmpSTR
建立库连接
Set rs Server.CreateObject(Adodb.Recordset)
SQL语句,从数据表userInfoTable中查询是否有跟Flash提交的用户名相同的记录,如果有则不允许重复注册
sql select * from userInfoTable where userNametmpUserNameStr
打开从库中读出的记录集
rs.Open sql, conn, 1, 3 if语句,如果没有该用户名记录,则允许添加数据
if rs.eof and rs.bof then
rs.addnew
rs(userName) tmpUserName
rs(passWord)tmpPassWord
rs(level) 1
rs.update
返回注册成功的信息
response.write true
else
返回注册失败的信息
response.write false
end if
利用Connection对象的Close方法关闭连接
rs.Close
将Connection对象从内存中删除,以释放资源
Set rs Nothing
Set conn Nothing
%
6.打开Flash新建一名为“loginAndRegiste.fla”的Flash文档并将其保存到IIS主目录(D盘下的“wwwroot”文件夹)下的“loginAndRegiste”文件夹。
7.新建一名为“loginAndRegiste.as”的Flash脚本文档同样保存到“D:\wwwroot\ loginAndRegiste”下使其与上面的“loginAndRegiste.fla”、“login.asp”、“registe.asp”和“userInfo.mdb”在同一文件夹下。
8.切换到“loginAndRegiste.fla”文档选择【CtrlF7】组合键打开【Components】面板展开【User Interface】树形菜单分别拖动一个DataGrid组件和一个Button组件到场景中然后将其删除。按下【CtrlL】组合键打开【Library】面板查看确保DataGrid组件和Button组件已存在于库中。在“loginAndRegiste.fla”的属性面板中设置其【Document class】为“loginAndRegiste”然后在“loginAndRegiste.as”脚本文档中输入下列代码并保存
package { //导入文件运行所需的类 import flash.display.*; import flash.text.*; import flash.net.*; import flash.events.*; import flash.errors.*; import flash.system.*; //导入Button组件 import fl.controls.Button; //导入DataGrid组件 import fl.controls.DataGrid; //导入DataGridColumn类 import fl.controls.dataGridClasses.DataGridColumn; //导入DataProvider类 import fl.data.DataProvider; public class loginAndRegiste extends Sprite { //定义输入文本框 private var userNameInputTxtFld:TextField; private var passWordInputTxtFld:TextField; //定义用户名和密码Label private var userNameLabel:TextField; private var passWordLabel:TextField; //定义两个变量用以接收用户名和密码 private var userName:String; private var passWord:String; //定义显示返回信息的文本框 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 loginBtn:Button; private var registeBtn:Button; //定义DataGrid以显示用户信息 private var myDataGrid:DataGrid; //定义ASP文件路径 private var aspPath:String; //定义URLRequest和URLLoader对象 private var aspRequest:URLRequest; private var loginLoader:URLLoader; private var registeLoader:URLLoader; //构造函数 public function loginAndRegiste() { init(); } //在场景中添加文本框 private function init() { //设置编码不然会显示乱码 System.useCodePagetrue; //用户名和密码输入框 userNameInputTxtFld createTextField(200, 140, 100, 20); passWordInputTxtFld createTextField(200, 160, 100, 20); userNameInputTxtFld.type TextFieldType.INPUT; passWordInputTxtFld.type TextFieldType.INPUT; userNameInputTxtFld.border true; passWordInputTxtFld.border true; passWordInputTxtFld.displayAsPasswordtrue; //用户名和密码Label userNameLabelcreateTextField(150, 140, 50, 20); passWordLabelcreateTextField(150, 160, 50, 20); userNameLabel.text用户名:; passWordLabel.text密 码:; //提示信息 returnInfoTxt createTextField(200,190, 150, 20); returnInfoTxt.type TextFieldType.DYNAMIC; returnInfoTxt.borderfalse; returnInfoTxt.text请输入用户名和密码...; //添加登录按钮 loginBtnnew Button(); loginBtn.move(310,140); loginBtn.setSize(50,20); loginBtn.label登录; //当单击计算按钮时将数据提交给ASP进行计算 loginBtn.addEventListener(MouseEvent.CLICK,login); addChild(loginBtn); //添加注册按钮 registeBtnnew Button(); registeBtn.move(310,160); registeBtn.setSize(50,20); registeBtn.label注册; //当单击计算按钮时将数据提交给ASP进行计算 registeBtn.addEventListener(MouseEvent.CLICK,registe); addChild(registeBtn); } //登录模块 private function login(event:Event):void { userNameuserNameInputTxtFld.text; passWordpassWordInputTxtFld.text; if (userName!passWord!) { aspPathhttp://127.0.0.1/loginAndRegiste/login.asp?userNameuserNamepassWordpassWordrandomNumMath.random(); aspRequestnew URLRequest(aspPath); loginLoadernew URLLoader(); loginLoader.addEventListener(Event.COMPLETE,loginLoadComplete); loginLoader.addEventListener(IOErrorEvent.IO_ERROR,loginLoadError); try { loginLoader.load(aspRequest); } catch (error:Error) { returnInfoTxt.text加载ASP文件失败...; } } else { returnInfoTxt.text请检查您的用户名和密码...; } } //注册模块 private function registe(event:Event):void { userNameuserNameInputTxtFld.text; passWordpassWordInputTxtFld.text; if (userName!passWord!) { aspPathhttp://127.0.0.1/loginAndRegiste/registe.asp?userNameuserNamepassWordpassWordrandomNumMath.random(); aspRequestnew URLRequest(aspPath); registeLoadernew URLLoader(); registeLoader.addEventListener(Event.COMPLETE,registeLoadComplete); registeLoader.addEventListener(IOErrorEvent.IO_ERROR,registeLoadError); try { registeLoader.load(aspRequest); } catch (error:Error) { returnInfoTxt.text加载ASP文件失败...; } } else { returnInfoTxt.text请检查您的用户名和密码...; } } //登录结束时的处理 private function loginLoadComplete(event:Event):void { tmpStringevent.target.data; if (tmpString!) { returnInfoTxt.text 登录成功...; tmpArraynew Array(); tmpArraytmpString.split(###); tmpArray.pop(); //添加DataProvider var tmpDP:DataProvider new DataProvider(); for (var i0; itmpArray.length; i) { tmpNametmpArray[i].split(#)[0]; tmpPassWordtmpArray[i].split(#)[1]; tmpLeveltmpArray[i].split(#)[2]; tmpDP.addItem({姓名:tmpName,密码:tmpPassWord,等级:tmpLevel}); } var nameColumn:DataGridColumn new DataGridColumn(姓名); var passWordColumn:DataGridColumn new DataGridColumn(密码); var levelColumn:DataGridColumn new DataGridColumn(等级); //添加DataGrid组件 myDataGridnew DataGrid(); myDataGrid.addColumn(nameColumn); myDataGrid.addColumn(passWordColumn); myDataGrid.addColumn(levelColumn); myDataGrid.move(150, 220); myDataGrid.setSize(210, 45); myDataGrid.dataProvidertmpDP; addChild(myDataGrid); } else { returnInfoTxt.text 登录失败...; } } //无法登录时的处理 private function loginLoadError(event:IOErrorEvent):void { returnInfoTxt.text加载ASP文件失败...; } //注册结束时的处理 private function registeLoadComplete(event:Event):void { tmpStringevent.target.data; if (tmpStringtrue) { returnInfoTxt.text 注册成功...; } else { returnInfoTxt.text 注册失败...; } } //无法注册时的处理 private function registeLoadError(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; addChild(tmpTxtFld); return tmpTxtFld; } }
}
9.按下【CtrlEnter】组合键在“loginAndRegiste.swf”窗口中的用户名和密码输入框中输入用户名密码单击【登录】按钮如果用户名和密码正确则给出该用户的其它信息并提示“登录成功…”如果用户名或密码错误则提示“登录失败…”。如图14-5-2所示是登录成功时的状态。 图14-5-2登录成功
10.在“loginAndRegiste.swf”窗口中的用户名和密码输入框中输入用户名密码单击【注册】按钮如果数据库中没有该用户信息则将该用户信息添加到数据并给出“注册成功…”的提示否则将给出“注册失败…”的提示。如图14-5-3所示是注册成功时的状态。 图14-5-3注册成功
以上给出的注册和登录例子只是为了说明Flash如何查询和添加数据库中的数据在实际应用中用户注册成功后可以跳到登录页提示用户登录用户登录成功后可以根据从数据库中获取的数据分配给用户相应的权限用户根据相应的权限进行相关的操作如进入聊天室聊天、发帖回帖等。
Flash通过ASP对数据库进行的操作除了以上介绍的读取、修改、查询和添加以外还有删除、批更新等其它操作其原理大同小异其中的关键之处就在于如何构造SQL语句把符合条件的语句检索出来。当然也可以在检索所有数据库记录的过程中直接使用条件语句进行判断但效率会比直接使用SQL语句低许多。
在搞清楚Flash与数据库之间的基本通讯原理之后学习的重点就可以转移到ASP与数据库的通讯及如何在Flash中灵活处理返回的数据上处理好这两点开发实用的RIA应用程序将非常轻松。