如何将AS3连接到MySQL数据库上

最近由于制作任务编辑器,需要连接到数据库中进行一些任务数据的操作,而我们存放任务数据的数据库中MYSQL,所以就找了一下AS3接连MYSQL数据库的资料。

扩张阅读:

ActionScript简称“AS”——动作脚本,是遵循 ECMAscript第四版 的 Adobe Flash Player 运行时环境的编程语言。它在 Flash 内容和应用程序中实现交互性、数据处理以及其他功能。 ActionScript是Flash的脚本语言,与JavaScript相似,ActionScript是一种编程语言,新出的AS3.0使用OOP(面对对象编程),增加更强的报错能力,指定类型也更明确。

找到一个好东西:ActionScript 3 MySql Driver,用SVN的童鞋可以直接checkout: 

http://assql.googlecode.com/svn/trunk/为了使用简单,我做了一个简单的包装类(包含一个数据结构):

  1. package com.easily.ds    
  2.  
  3. {    
  4.  
  5.     public class DataBaseData    
  6.  
  7.     {    
  8.  
  9.         public var host:String;    
  10.  
  11.         public var port:int;    
  12.  
  13.         public var username:String;    
  14.  
  15.         public var password:String;    
  16.  
  17.         public var database:String;    
  18.  
  19.     }    
  20.  
  21. }  
  1. package com.easily.util    
  2.  
  3. {    
  4.  
  5.     import com.easily.ds.DataBaseData;    
  6.  
  7.     import com.maclema.mysql.Connection;    
  8.  
  9.     import com.maclema.mysql.Field;    
  10.  
  11.     import com.maclema.mysql.MySqlResponse;    
  12.  
  13.     import com.maclema.mysql.MySqlToken;    
  14.  
  15.     import com.maclema.mysql.ResultSet;    
  16.  
  17.     import com.maclema.mysql.Statement;    
  18.  
  19.          
  20.  
  21.     import flash.events.Event;    
  22.  
  23.     import flash.events.EventDispatcher;    
  24.  
  25.          
  26.  
  27.     import mx.rpc.AsyncResponder;    
  28.  
  29.      
  30.  
  31.     /**    
  32.  
  33.      * @author Easily    
  34.  
  35.      */   
  36.  
  37.     public class DataBase extends EventDispatcher    
  38.  
  39.     {    
  40.  
  41.         private var mDataBase:DataBaseData;    
  42.  
  43.         private var mConnection:Connection;    
  44.  
  45.              
  46.  
  47.         public function DataBase(database:DataBaseData)    
  48.  
  49.         {    
  50.  
  51.             mDataBase = database;    
  52.  
  53.         }    
  54.  
  55.              
  56.  
  57.         public function connect():void   
  58.  
  59.         {    
  60.  
  61.             mConnection = new Connection(mDataBase.host, mDataBase.port,     
  62.  
  63.                 mDataBase.username, mDataBase.password, mDataBase.database);    
  64.  
  65.             mConnection.addEventListener(Event.CONNECT, onConnected);    
  66.  
  67.                  
  68.  
  69.             mConnection.connect();    
  70.  
  71.                  
  72.  
  73.             function onConnected(event:Event):void   
  74.  
  75.             {    
  76.  
  77.                 mConnection.removeEventListener(Event.CONNECT, onConnected);    
  78.  
  79.                      
  80.  
  81.                 dispatchEvent(event);    
  82.  
  83.             }    
  84.  
  85.         }    
  86.  
  87.              
  88.  
  89.         public function disconnect():void   
  90.  
  91.         {    
  92.  
  93.             mConnection.disconnect();    
  94.  
  95.         }    
  96.  
  97.              
  98.  
  99.         public function select(sql:String, completeHandler:Function, errorHandler:Function = null):void   
  100.  
  101.         {    
  102.  
  103.             var st:Statement = mConnection.createStatement();    
  104.  
  105.             var token:MySqlToken = st.executeQuery(sql);    
  106.  
  107.             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);    
  108.  
  109.             token.addResponder(responder);    
  110.  
  111.                  
  112.  
  113.             function resultHandler(result:Object/*ResultSet*/, token:Object/*MySqlToken*/):void   
  114.  
  115.             {    
  116.  
  117.                 var data:Array = [];    
  118.  
  119.                      
  120.  
  121.                 if (result is ResultSet)    
  122.  
  123.                 {    
  124.  
  125.                     var fieldList:Array = result.getColumns();    
  126.  
  127.                     while (result.next())    
  128.  
  129.                     {    
  130.  
  131.                         var item:Object = {};    
  132.  
  133.                         for each (var field:Field in fieldList)    
  134.  
  135.                         {    
  136.  
  137.                             item[field.getName()] = result.getString(field.getName());    
  138.  
  139.                         }    
  140.  
  141.                         data.push(item);    
  142.  
  143.                     }    
  144.  
  145.                 }    
  146.  
  147.                      
  148.  
  149.                 completeHandler(data);    
  150.  
  151.             }    
  152.  
  153.                  
  154.  
  155.             function faultHandler(info:Object, token:Object):void   
  156.  
  157.             {    
  158.  
  159.                 if (errorHandler == nullreturn;    
  160.  
  161.                      
  162.  
  163.                 errorHandler();    
  164.  
  165.             }    
  166.  
  167.         }    
  168.  
  169.              
  170.  
  171.         public function insert(sql:String, completeHandler:Function, errorHandler:Function = null):void   
  172.  
  173.         {    
  174.  
  175.             var st:Statement = mConnection.createStatement();    
  176.  
  177.             var token:MySqlToken = st.executeQuery(sql);    
  178.  
  179.             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);    
  180.  
  181.             token.addResponder(responder);    
  182.  
  183.                  
  184.  
  185.             function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void   
  186.  
  187.             {    
  188.  
  189.                 completeHandler(result.insertID);    
  190.  
  191.             }    
  192.  
  193.                  
  194.  
  195.             function faultHandler(info:Object, token:Object):void   
  196.  
  197.             {    
  198.  
  199.                 if (errorHandler == nullreturn;    
  200.  
  201.                      
  202.  
  203.                 errorHandler();    
  204.  
  205.             }    
  206.  
  207.         }    
  208.  
  209.              
  210.  
  211.         public function remove(sql:String, completeHandler:Function, errorHandler:Function = null):void   
  212.  
  213.         {    
  214.  
  215.             var st:Statement = mConnection.createStatement();    
  216.  
  217.             var token:MySqlToken = st.executeQuery(sql);    
  218.  
  219.             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);    
  220.  
  221.             token.addResponder(responder);    
  222.  
  223.                  
  224.  
  225.             function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void   
  226.  
  227.             {    
  228.  
  229.                 completeHandler();    
  230.  
  231.             }    
  232.  
  233.                  
  234.  
  235.             function faultHandler(info:Object, token:Object):void   
  236.  
  237.             {    
  238.  
  239.                 if (errorHandler == nullreturn;    
  240.  
  241.                      
  242.  
  243.                 errorHandler();    
  244.  
  245.             }    
  246.  
  247.         }    
  248.  
  249.     }    
  250.  
  251. }  

其中有3个方法,select,insert,remove,分别对应了SQL语句中的select,insert,delete

用法很简单,先连接:

  1. var databaseData:DataBaseData = new DataBaseData();         
  2.  
  3. databaseData.host = "127.0.0.1";    
  4.  
  5. databaseData.database = "game";    
  6.  
  7. databaseData.password = "123456";    
  8.  
  9. databaseData.port = 3306;    
  10.  
  11. databaseData.username = "root";    
  12.  
  13.      
  14.  
  15. var dataBase:DataBase = new DataBase(databaseData);    
  16.  
  17. dataBase.addEventListener(Event.CONNECT, onConnected);    
  18.  
  19. dataBase.connect();    
  20.  
  21.      
  22.  
  23. function onConnected(event:Event):void   
  24.  
  25. {    
  26.  
  27.     dataBase.removeEventListener(Event.CONNECT, onConnected);    
  28.  
  29.          
  30.  
  31.     dispatchEvent(new Event(Event.COMPLETE));    
  32.  
  33. }  

如果不需要用了可以先断开连接:

  1. dataBase.disconnect();   

下面是select语句:

  1. var sql:String = "select id,name from `npc`";    
  2.  
  3. dataBase.select(sql, endQuery);    
  4.  
  5.      
  6.  
  7. function endQuery(data:Array):void   
  8.  
  9. {    
  10.  
  11.     var npcList:Array=  [];    
  12.  
  13.     for each (var item:Object in data)    
  14.  
  15.     {    
  16.  
  17.         var npc:Object = {id:item.id, name:item.name};    
  18.  
  19.              
  20.  
  21.         npcList.push(npc);    
  22.  
  23.     }       
  24.  
  25. }  

insert语句用法会返回一个insertID,也就是插入的那条数据的ID。

 原文链接:http://www.cnblogs.com/yili16438/archive/2011/04/23/2025936.html

【编辑推荐】

  1. 用C++连接MySQL等数据库一
  2. 用C++连接MySQL等数据库二
  3. 这些SQLite与SQL差异问题,你遇到过吗
  4. 总结Win2003 Server与SQL Server 2005的远程连接过程
  5. 如何解决IBatis.net与MySQL连接问题

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/230327.html<

(0)
运维的头像运维
上一篇2025-04-19 04:35
下一篇 2025-04-19 04:36

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注