首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

AS3联接MYSQL数据库

2013-10-23 
AS3连接MYSQL数据库原文链接:http://www.cnblogs.com/yili16438/archive/2011/04/23/2025936.html?最近由

AS3连接MYSQL数据库

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

?

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

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

http://assql.googlecode.com/svn/trunk/?

为了使用简单,我做了一个简单的包装类(包含一个数据结构):

package com.easily.ds {     public class DataBaseData     {         public var host:String;         public var port:int;         public var username:String;         public var password:String;         public var database:String;     } } ?package com.easily.util {     import com.easily.ds.DataBaseData;     import com.maclema.mysql.Connection;     import com.maclema.mysql.Field;     import com.maclema.mysql.MySqlResponse;     import com.maclema.mysql.MySqlToken;     import com.maclema.mysql.ResultSet;     import com.maclema.mysql.Statement;           import flash.events.Event;     import flash.events.EventDispatcher;           import mx.rpc.AsyncResponder;       /**      * @author Easily      */    public class DataBase extends EventDispatcher     {         private var mDataBase:DataBaseData;         private var mConnection:Connection;                   public function DataBase(database:DataBaseData)         {             mDataBase = database;         }                   public function connect():void        {             mConnection = new Connection(mDataBase.host, mDataBase.port,                  mDataBase.username, mDataBase.password, mDataBase.database);             mConnection.addEventListener(Event.CONNECT, onConnected);                           mConnection.connect();                           function onConnected(event:Event):void            {                 mConnection.removeEventListener(Event.CONNECT, onConnected);                                   dispatchEvent(event);             }         }                   public function disconnect():void        {             mConnection.disconnect();         }                   public function select(sql:String, completeHandler:Function, errorHandler:Function = null):void        {             var st:Statement = mConnection.createStatement();             var token:MySqlToken = st.executeQuery(sql);             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);             token.addResponder(responder);                           function resultHandler(result:Object/*ResultSet*/, token:Object/*MySqlToken*/):void            {                 var data:Array = [];                                   if (result is ResultSet)                 {                     var fieldList:Array = result.getColumns();                     while (result.next())                     {                         var item:Object = {};                         for each (var field:Field in fieldList)                         {                             item[field.getName()] = result.getString(field.getName());                         }                         data.push(item);                     }                 }                                   completeHandler(data);             }                           function faultHandler(info:Object, token:Object):void            {                 if (errorHandler == null) return;                                   errorHandler();             }         }                   public function insert(sql:String, completeHandler:Function, errorHandler:Function = null):void        {             var st:Statement = mConnection.createStatement();             var token:MySqlToken = st.executeQuery(sql);             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);             token.addResponder(responder);                           function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void            {                 completeHandler(result.insertID);             }                           function faultHandler(info:Object, token:Object):void            {                 if (errorHandler == null) return;                                   errorHandler();             }         }                   public function remove(sql:String, completeHandler:Function, errorHandler:Function = null):void        {             var st:Statement = mConnection.createStatement();             var token:MySqlToken = st.executeQuery(sql);             var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);             token.addResponder(responder);                           function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void            {                 completeHandler();             }                           function faultHandler(info:Object, token:Object):void            {                 if (errorHandler == null) return;                                   errorHandler();             }         }     } } 

?

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

用法很简单,先连接:

var databaseData:DataBaseData = new DataBaseData();      databaseData.host = "127.0.0.1"; databaseData.database = "game"; databaseData.password = "123456"; databaseData.port = 3306; databaseData.username = "root";   var dataBase:DataBase = new DataBase(databaseData); dataBase.addEventListener(Event.CONNECT, onConnected); dataBase.connect();   function onConnected(event:Event):void{     dataBase.removeEventListener(Event.CONNECT, onConnected);           dispatchEvent(new Event(Event.COMPLETE)); } 

?

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

dataBase.disconnect(); 

?下面是select语句:

var sql:String = "select id,name from `npc`"; dataBase.select(sql, endQuery);   function endQuery(data:Array):void{     var npcList:Array=  [];     for each (var item:Object in data)     {         var npc:Object = {id:item.id, name:item.name};                   npcList.push(npc);     }    } 

?

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

热点排行