`
陈新杰
  • 浏览: 107352 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

第一个ActionScript MySQL Driver:asSQL原理与实践

    博客分类:
  • flex
阅读更多

熟悉Flex 的开发者都知道,在Flex中不能直接访问数据库,而是采用HTTPService/WebService/RemoteObject等方式实现。asSQL的出现多少让大家感到意外(抛开这两种方式的优劣不提),也可见它的威力。

1. 简介

大型软件系统都采取了分层设计的原则,将其分为大致表现(UI)、业务逻辑以及EIS三部分。在Java语言,直接与数据库打交道曾是家常便饭。Hibernate等O/R Mapping工具流行,直接使用JDBC编程变得少见了,但有时这种方式更加简便、速度更快。

ActionScript用于在Flash实现动画设计,访问数据库自然不是它的强项,甚至大家都觉得没有必要。asSQL的出现使许多Flash的开发 者感到惊喜(也许在Java开发人员看来这实在算不了什么)。asSQL现在是alpha版本,还很稚嫩有一些问题。但基本工作正常。

2. asSQL驱动

a)Connection

asSQL也提供了类似Java语言的Connection,确切的说asSQL中的Connection是类,而Java的Connectio是接口。 Connection负责与mySQL Server通讯(通过socket建立连接,握手,接收/发送数据包),并按照mySQL协议解析、加密数据包(此处略去协议处理细节,感兴趣的请访问 http://www.redferni.uklinux.net/mysql/MySQL-Protocol.html)。

b)MysqlService

虽然Connection是asSQL的核心对象,但与客户打交道仅有一个UI组件MysqlService。该组件需要用户输入host,port, database等信息,在内部创建Connection,这避免了用户直接操作Connection可能引发的错误。

xml 代码

<controls:MysqlService id="sqlService" host="localhost" port="3306" user="root" scrambler="{new PlainTextScrambler('sa')}" database="jpetstore" response="onResponse(event)" error="onError(event)" />  

将操作结果保存到lastResult中,因此它可作为数据源(data provider)供其它组件(如DataGrid)使用,如下所示:

xml 代码

<mx:DataGrid x="55" y="137" dataProvider="{sqlService.lastResult}">  
    <mx:columns>  
        <mx:DataGridColumn headerText="UserId" dataField="userid"/>  
        <mx:DataGridColumn headerText="Email" dataField="email"/>  
        <mx:DataGridColumn headerText="First Name" dataField="firstname"/>  
    mx:columns>  
mx:DataGrid>  

在一个按钮click事件中,调用myService.send('SELECT userid,email,firstname FROM account;')即可触发上述DataGrid加载数据。

MysqlService支持3个事件,分别是results、response和errors,供调用者定制操作结果。

errors :显然是发生错误
results、response的区别是前者针对SELECT操作,后者针对UPDATE,DELETE......

遗憾的是,MysqlService设计的不够完美,Connection的创建和释放可能被分离到类内部和外部实现。如果用户提供上述事件的响应函数,就必须在该函数中显示关闭connection。如下所示:


ActionScript 代码

private function onResults(e:ResultsEvent):void{   
      var st:Statement = Statement(e.target);   
      var con:Connection = st.getConnection();   
      var rs:ResultSet = e.resultSet;   
  
      while ( rs.next() ) {   
          var userid = rs.getString("userid");   
          //var email = rs.getString(2);   
          trace(userid);   
      }   
  
      con.disconnect();   
}   
  
private function onResponse(e:ResponseEvent):void{     
     var st:Statement = Statement(e.target);   
     var con:Connection = st.getConnection();   
        
     var affectedRows:int = e.affectedRows;   
     var insertID:int = e.insertID;   
  
     con.disconnect();   
}   
  
private function onError(e:SQLErrorEvent):void{   
     var st:Statement = Statement(e.target);   
     var con:Connection = st.getConnection();   
        
     var message:String = e.msg;   
     var errorNo:int = e.id;   
     var text:String = e.text; // Equals SQLError #{id}: {msg}   
  
     con.disconnect();   
}   

3. 示例

    asSQL目前仅支持mySQL,它以UI组件的形式供用户调用,并以数据源的形式把数据和UI组件绑定。

    开发环境:Flex Builder 2,以及MySql 5,还有Spring 1.2.8中实例JPetStore的Schema。

步骤1:MySQL中建立一个叫做JPetStore的Database。并把JPetStore的Schema导入其中。
步骤2:从http://maclema.com/assql/downloads/asSQL-0.1alpha.swc下载asSQL SWC
步骤3:新建Flex Project项目,然后选中项目根目录,右键Properties->Flex Build Path->Library Path;点击右侧按钮Add SWC,在浏览窗口找到刚下载的SWC文件。
步骤4:编辑Flex的界面元素,增加1个ComboBox和1个DataGrid,以及2个按钮。然后编辑MXML文件。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    FLEX Flash 连接 MySQL有源码 ver2.8最新版

    Actionscript 3 MySql Driver asSQL is an Actionscript 3 Mysql Driver aimed towards AIR projects to allow Mysql database connectivity directly from Actionscript. flash直接连mysql组件,有源码。

    mysql driver

    mysql driver

    ActionScript 3.0语法参考手册

    用于比较第一个操作数是否大于等于第二个操作数。 **示例代码:** ```actionscript var x:Number = 10; var y:Number = 10; trace(x &gt;= y); // 输出 true ``` #### 三十四、成员运算符 `in` 用于检查对象是否包含...

    ActionScript 3.0基础教程 as3源代码

    8. **ActionScript 3.0与Flash Player的集成**:AS3代码与Flash Player紧密结合,可以访问所有Flash Player提供的API,如硬件加速的图形渲染、网络通信和多媒体处理。 9. **性能提升**:与AS2相比,AS3的执行速度...

    Foundation ActionScript 3 Animation:Making Things Move!中文版.part1

    Foundation ActionScript 3 Animation:Making Things Move!中文版。分两部分上传。史上最好的AS3教程!王汝义翻译~

    Foundation ActionScript 3 Animation:Making Things Move!中文版.part2

    Foundation ActionScript 3 Animation:Making Things Move!中文版。分两部分上传。史上最好的AS3教程!王汝义翻译~

    ActionScript3:五子棋源码

    1. 图形绘制:AS3提供了Graphics类,可以用来在舞台上绘制图形,如棋盘的格子线。使用beginFill()、lineTo()等方法,可以轻松绘制出棋盘。 2. 事件监听:使用addEventListener()方法监听鼠标点击事件,获取到用户的...

    ActionScript 3.0开发技术大全(第一部分)

    第一部分: 第1篇 ActionScript3.0语言基础  第1章 ActionScript3.0概述  第2章 搭建ActionScript3.0开发环境  第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性  第4章 ActionScript3.0面向...

    Foundation.Actionscript.3.0.Animation

    《Foundation Actionscript 3.0 Animation》是一本深入探讨ActionScript 3.0动画技术的专业电子教程。ActionScript是Adobe Flash Platform的核心编程语言,而3.0版本的更新带来了许多性能提升和新特性,使得创建复杂...

    as3.0访问mysql数据库

    在本文中,我们将深入探讨如何使用AS3.0(ActionScript 3.0)通过Flash与PHP进行交互,从而访问MySQL数据库。ActionScript是Adobe Flash Professional和Flash Builder中用于创建动态内容的编程语言,而PHP是一种广泛...

    从 ActionScript 2.0 迁移到 ActionScript 3.0:主要概念和变化

    从 ActionScript 2.0 迁移到 ActionScript 3.0:主要概念和变化

    actionscript demo

    4. 事件模型:AS3有一个强大的事件驱动模型,允许对象之间通过事件进行通信。例如,用户交互、加载数据或时间触发的事件都可以用事件处理函数来响应。 5. 异步编程:由于Flash运行在浏览器环境中,ActionScript 3.0...

    ActionScript3.0官方帮助文档

    1. **面向对象编程**:ActionScript 3.0是一个完全的面向对象语言,支持类、接口、包和继承。这使得开发者可以构建复杂的软件结构和模块化代码。 2. **事件驱动**:AS3基于事件驱动模型,允许程序响应用户交互、...

    ActionScript 3.0编程精髓

    1. **基础语法**:AS3引入了更严格的类型系统,包括动态类型和静态类型的区分,以及强类型变量的声明。此外,AS3的面向对象特性显著增强,支持类、接口、封装、继承和多态等概念。 2. **类与对象**:AS3中的类定义...

    ActionScript

    ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用程序(RIA)以及动画。在“ActionScript开发技术大全”这个主题中,我们...

    as3,php和mysql之间的连接及使用数据

    1. **XMLSocket通信**:AS3可以使用XMLSocket类来与服务器进行双向实时通信。通过创建XMLSocket对象并连接到PHP服务器,AS3可以发送和接收数据。PHP端可以通过socket服务处理这些通信,实现数据交换。 2. **AMF通信...

    actionscript

    1. **类型系统**:AS3 引入了强类型系统,每个变量在声明时必须指定其数据类型,如 `var myVar:String;`。这有助于减少运行时错误并提高代码质量。 2. **类与对象**:AS3 采用面向对象编程,支持类、对象、继承、...

Global site tag (gtag.js) - Google Analytics