AS3 自己读取mysql的例子

转载自:http://hi.baidu.com/silvanote/blog/item/a5aab77996d458f90bd18748.html

 

实现这个需要assql 类库 虽然现在的版本还不稳定 但基本的一些数据操作可以

整理它的一些实例 做了一个AIR 的实例!现在查询 增加 列表 三个功能!



第一步 创建MYSQL数据库:

assql-test

第二步 执行下例SQL语句:

CREATE TABLE IF NOT EXISTS `use_db` (
   `id` float NOT NULL AUTO_INCREMENT,
   `names` char(25) COLLATE utf8_bin NOT NULL,
   `pass` char(25) COLLATE utf8_bin NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=10 ;

第三步:创建一个FB4 AIR项目 名为AsSql

mxml代码 全部复制粘过去就行了

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
              xmlns:s="library://ns.adobe.com/flex/spark"
              creationComplete="init()"
              xmlns:mx="library://ns.adobe.com/flex/mx" width="600" height="300">
   <fx:Script>
     <![CDATA[
      import com.maclema.mysql.Connection;
      import com.maclema.mysql.MySqlToken;
      import com.maclema.mysql.ResultSet;
      import com.maclema.mysql.Statement;
      import com.maclema.util.ResultsUtil;
      import mx.controls.Alert;
      import mx.rpc.AsyncResponder;
      private var con:Connection;
      private function init():void{
         onCreationComplete();
       }
      private function onCreationComplete():void {
         con = new Connection("localhost", 3306, "root", "", "assql-test");
         con.addEventListener(Event.CONNECT, handleConnected);
         con.connect();
       }
      
      private function handleConnected(e:Event):void {
         getList();
       }
      
      private function getTab(_id:int):void{
         var st:Statement = con.createStatement();
         st.sql = "SELECT * FROM use_db WHERE id = "+String(_id);
         var token:MySqlToken = st.executeQuery();
         token.addResponder(new AsyncResponder(
           function (data:Object, token:Object):void {
             var rs:ResultSet = ResultSet(data);
            while(rs.next()) {
               out_txt.text=rs.getString("names")+":"+rs.getString("pass");
             }
           },
           function (info:Object, token:Object):void {
             Alert.show("Error: " + info);
           },
           token
         ));
       }
      private function getList(_s:int=0,_e:int=100):void{
         var st:Statement = con.createStatement();
         st.sql = "SELECT * FROM `use_db` LIMIT 0,30";
         var token:MySqlToken = st.executeQuery();
         token.addResponder(new AsyncResponder(
           function (data:Object, token:Object):void {
             var rs:ResultSet = ResultSet(data);
             var obj:Array=new Array();
            while(rs.next() ) {
               Debug.log(rs.getString("names"));
               obj.push({ids:rs.getNumber("id"),names:rs.getString("names"),pass:rs.getString("pass")});
             }
             dataList.dataProvider=obj;
           },
           function (info:Object, token:Object):void {
             Alert.show("Error: " + info);
           },
           token
         ));
       }
      private function wirteData(user:String,pass:String):void{
        //INSERT INTO `assql-test`.`use_db` (`id`, `names`, `pass`) VALUES (NULL, '', ''), (NULL, 'qq', 'wwe123');
         var st:Statement = con.createStatement();
         st.sql = "INSERT INTO `assql-test`.`use_db` (`id`, `names`, `pass`) VALUES (NULL, '"+user+"', '"+pass+"')";
         var token:MySqlToken = st.executeQuery();
         token.addResponder(new AsyncResponder(
           function (data:Object, token:Object):void {
            if(data.affectedRows>=1){
               Alert.show('成功写入'+String(data.affectedRows)+'数据');
               getList();
             }
           },
           function (info:Object, token:Object):void {
             Alert.show("Error: " + info);
           },
           token
         ));
       }
     ]]>
   </fx:Script>
   <s:HGroup>
     <s:VGroup>
       <s:Label text="操作数据库:"/>
       <mx:Form>
         <mx:FormItem label="id:">
           <s:TextInput id="input_txt" />
         </mx:FormItem>
         <mx:FormItem>
           <s:Button label="读取" click="getTab(int(input_txt.text))"/>
         </mx:FormItem>
         <mx:FormItem label="输出:">
           <s:TextArea id="out_txt" height="50" width="100%"/>
         </mx:FormItem>
         <mx:HRule width="100%"/>
         <mx:FormItem label="names:">
           <s:TextInput id="input1_txt" />
         </mx:FormItem>
         <mx:FormItem label="pass:">
           <s:TextInput id="input2_txt" />
         </mx:FormItem>
         <mx:FormItem>
           <s:Button label="写入" click="wirteData(input1_txt.text,input2_txt.text)"/>
         </mx:FormItem>
       </mx:Form>
     </s:VGroup>
     <mx:VRule id="line" height="100%"/>
     <s:VGroup>
       <s:Label text="数据库列表:"/>
       <mx:DataGrid rowCount="3" id="dataList" height="200">
         <mx:columns>
           <mx:DataGridColumn dataField="ids" dataTipField="id"/>
           <mx:DataGridColumn dataField="names"/>
           <mx:DataGridColumn dataField="pass"/>
         </mx:columns>
       </mx:DataGrid>
     </s:VGroup>
   </s:HGroup>
</s:WindowedApplication>

其中注意

con = new Connection("localhost", 3306, "root", "", "assql-test"); 是否配置正确

参数1 为你本地的IP 或是外网的IP

参数2 端口

参数3 mysql用户名

参数4 mysql 密码

参数5 要连接的数据库名


 

posted @ 2011-09-02 11:06  懵懵懂懂的it人生  阅读(950)  评论(0编辑  收藏  举报