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

数据库 MySQL
最近由于制作任务编辑器,需要连接到数据库中进行一些任务数据的操作,而我们存放任务数据的数据库中MYSQL,所以就找了一下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连接问题
责任编辑:艾婧 来源: 博客园
相关推荐

2023-04-25 13:57:00

GitHubVS Code

2012-06-20 11:17:02

MemSQL

2019-09-18 08:00:00

MySQL数据库服务器

2010-05-26 14:24:24

MySQL数据库

2022-06-26 07:18:17

数据库NodePostgreSQL

2019-08-27 09:20:21

无线打印机Windows 10PC

2021-01-28 09:00:00

SQL数据库NoSQL

2011-07-28 18:08:51

SQL Server MySQL

2010-05-14 11:12:16

连接MySql

2020-11-23 14:16:42

Golang

2009-11-24 16:48:15

PHP mysqli

2021-08-02 10:53:28

PythonMySQL数据库

2018-10-15 13:57:38

Hadoop数据库MySQL

2010-09-30 11:04:47

DB2数据库卸载

2017-09-11 19:30:44

MySQLCmd命令连接数据库

2019-03-20 09:00:00

MySQL数据库转移数据库

2018-02-26 20:00:00

编程语言JavaMySQL

2009-07-07 14:56:33

JSP连接MySQL

2009-06-01 09:57:43

netbeans连接数netbeans数据库netbeans连接m

2010-06-04 17:49:46

连接MySQL数据库
点赞
收藏

51CTO技术栈公众号