AS3FlexDB

I think it’s time to write a quick and short  post about my flex library. I will only write a short description and some simple usage example. For more explicit tutorials see iTutorials or Sephiroth.

What is AS3FlexDB ?

AS3FlexDB is an open source library that allows Adobe Flex applications to connect to a MySQL server. This library use AMFPHP to acess a MySQL server.

Why AS3FlexDB ?

So before I start describe the lib let me tell you how this project got live. The ideea of this project was a simple question “Can I have all my SQL’s in AS3 and not in PHP?” how useful can that be !  To be more specific what I was wishing was a library that allow me to manipulate a MySQL Database in AS3 no need for me to write any PHP code or other server side code. So this is why? i have chose to write this library.

How AS3FlexDB execute an SQL Statement ?

So what AS3FlexDB do in background ? The flow of events from your code to MySQL is very simple. AS3FlexDB use “RemoteObject” class to access a AMFPHP service. The AMFPHP service more exactly the php “Database” class execute the SQL and return the results to Flex.

Take a look at next diagram :

As3FlexDB Arhitecture

Now you know what is AS3FlexDB, why I have develop AS3FlexDB and how it works the next important question you must put yourself is “ How can I install and use AS3FlexDB ? “

Install AS3FlexDB

To install AS3FlexDB all you have to do is to install AMFPHP (look here for a tutorial if you don’t know how) copy the file database.php (you can find this file in AS3FlexDB Kit) in your AMFPHP service directory and import in Flex as3flexdb_version.swc library and you are done.

Use AS3FlexDB

You can use AS3FlexDB entirely from MXML or from actionscript.  So first let’s try SELECT all users from a database with MXML. The code for this is :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<mx:Application
	layout="vertical"
	xmlns:phi="phi.db.*"
	xmlns:mx="http://www.adobe.com/2006/mxml">
 
	<mx:DataGrid id="dg1" width="100%" height="100%" dataProvider="{q1.Records}">
		<mx:columns>
			<mx:DataGridColumn dataField="fname" headerText="First Name"/>
			<mx:DataGridColumn dataField="lname" headerText="Last Name"/>
			<mx:DataGridColumn dataField="password" headerText="Password"/>
		</mx:columns>
	</mx:DataGrid>
 
 
 
	<phi:ConnectionData id="c1" name="mxml_conn1"
						host="localhost"
						db="test"
						username="root"
						password="root" />
 
	<phi:Database id="db1" connection="{c1}" />
	<phi:Query id="q1" database="{db1}" q="SELECT * FROM users WHERE 1" />
	<phi:QueryExecute id="q1ex" query="{q1}" />
 
</mx:Application>

If you want to select all users from database using AS3 the code for that will look like this :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/** Database */
import phi.interfaces.IQuery;
import phi.interfaces.IDatabase;
import phi.db.Database;
import phi.db.Query;
/** */
 
private var db       :IDatabase;
private var query    :IQuery;
 
private function onCreateComplete():void
{
	db = Database.getInstance();
	query = new Query();
 
	db.connect("conn1", "root", "", "localhost", "flexdb", true);
	query.connect("conn1", db);}
 
private function selectUsers():void
{
	query.addEventListener(Query.QUERY_END, queryEnd);
	query.execute("SELECT * FROM users WHERE 1");
}
 
private function queryEnd(evt:Object):void
{
	users = query.Records();
}

I think now you have a very solid ideea about what this library do. So if you think it’s what you need or you want to read more documentations the next links can help you.

Documentation | Download

If you want to join the project visit project home page here.
Until next post I will close this post with one of my favorite quote:

“Talent does what it can, genius does what it must.”

Tags: , , , ,

59 Responses to “AS3FlexDB”

  1. Leandro de Oliveira Says:

    This library is very interesting, you are using in production?

  2. Alexandru Ghiura Says:

    I am not sure if I have understand your question but yes I use this library in the process of production of my software.

  3. Ben Garvida Says:

    Straight forward and elegant. I cannot do an insert yet though. If you an give me an example I would really appreciate it. By the way, does this work on php 4.4.6? I had to do some changes to get amfphp 1.9 beta to work with php 4.4.6.

    Thank you

  4. Alexandru Ghiura Says:

    About your INSERT problem I will write a post with an example and about php 4.4.6 I don’t know I have’t test it.

  5. Ben Garvida Says:

    Great and I’ll look forward to your post on INSERT! I even tried using the EXECUTE method to do the insert (instead of ARRAYINSERT) but no luck…

  6. vincent maitray » Embouteillage sur l’autoroute WordPressFlash Says:

    [...] Flex / WordPress avec Cairngorm ( bas de page ) ou Alexandru Ghiura qui a réalisé un système ( AS3FlexDB ) dans lequel on code les requêtes SQL directement dans le code [...]

  7. A. Says:

    how do you tackle the entire security issue? after all the swf can be decompiled and all your database credentials and tables’ structure can be revealed..

    is there any way to prevent it?
    thanks

  8. Alexandru Ghiura Says:

    You can read this post for your problem : http://itutorials.ro/viewtopic.php?f=14&t=27

  9. showky_1664 Says:

    How can i pass a flex variable in the sql query statement?
    Something like this,
    select * from users where id=value;
    here value is a variable which has the value of the item selected in the combo box.
    Plz help me out…i m a newbie
    Thanx in advance

  10. Alexandru Ghiura Says:

    var myID :Number = 2;
    query.execute(”SELECT * FROM users WHERE id = “+ myID);

  11. showky_1664 Says:

    Hey thanx for the reply…
    But i hav my variable as string…and its not working when i include the variable in the query.
    I did put single quotes as
    public var myID :String = ‘abc’;
    query.execute(”SELECT * FROM users WHERE id = “+ ‘myID’);
    but then also not working…
    wat could i do now?

  12. Alexandru Ghiura Says:

    public var myID :String = ‘abc’;
    query.execute(”SELECT * FROM users WHERE id = ‘ “+ myID + ” ‘ “);

  13. showky_1664 Says:

    Hey thanx man….
    it worked..
    nice app…
    Keep up the work..

  14. Vladimir Pavlovic Says:

    Hello!

    I’m using this library in my AIR application.

    Is it possible not to make background disabled, or not to use overlay color, when executing query.

    Thanks

  15. Charlie Says:

    Nice flex component. But I have a problem. My application repaints the screen every time I simply execute a query. So you see the whole screen “flash”. And I am not binding anything to the results of the query, so I am not updating the screen at all….

    Any ideas?

    thanks!

  16. Alexandru Ghiura Says:

    It’s because when you execute a query the loading screen is show. You can read here how you can remove the loading screen http://itutorials.ro/viewtopic.php?f=9&t=22&p=59&hilit=loading#p59

  17. Charlie Says:

    Perfect!! I recompiled the query.as file, commenting out the phiBusy method calls, and bingo, no more “busy loading” spinner guy. And now more screen flashing!

    Thanks!

  18. Charlie Says:

    I mean “no more” screen flashing …!

  19. Alexandru Ghiura Says:

    Good job :D

  20. Charlie Says:

    Next question … I am trying to get back the last inserted id from a table that has an auto-incrementing id column.

    From your code comments about the END_QUERY event:
    At the time when this event is sent, the Query object has been retrieve the records if a SELECT statements was execute or the last inserted id if a INSERT statement was execute.

    When I catch this end_query event after an insert statement, and check the query object, the Records field is always null. Can you give a short example of how this should work. Thanks!

  21. Charlie Says:

    Actually, what I would like to be able to use the last_insert_id() function. When I execute “insert into myTable (name) values (”bill”)” and then “select last_insert_id()”, directly in phpMyAdmin, I get back the right value (the newly created id value). But from the as3FlexDB component, I always get back a 0 (zero).
    Any ideas? Much appreciated!

  22. Alexandru Ghiura Says:

    Read this post: http://itutorials.ro/viewtopic.php?f=14&t=25&start=0&st=0&sk=t&sd=a&hilit=get

  23. Charlie Says:

    That did it! Thanks!!

  24. Charlie Says:

    On startup I sometimes get a RPC fault “mysql_db_query(): supplied argument is not a valid MySQL-Link resource” faultCode=”AMFPHP_RUNTIME_ERROR” faultDetail ” .. amfphp/services/mysql/database.php on line 19″
    Could it be that I have not finished connecting to the database before I send in my first query? If so, are there “connection successful” type events I can listen for before I start any queries?

    thanks!

  25. Rubeel Says:

    I am following the examples as suggested for insert but it doesnt work for me.

    I keep getting
    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at views::register/processAdd()[D:\Documents and Settings\rubeel\My Documents\Flex Builder 3\roommate\src\views\register.mxml:36]
    at views::register/___register_Button1_click()[D:\Documents and Settings\rubeel\My Documents\Flex Builder 3\roommate\src\views\register.mxml:100]
    my code is as follows

    var user_confirmed:Number = 1;
    var user_auth_code:String = “user_auth_codeuser_auth_codeuser_auth_codeuser_auth_code”;

    var arr :Array = new Array();
    arr.push({key: “user_password”, value: user_password.text});
    arr.push({key: “user_last_name”, value: user_last_name.text});
    arr.push({key: “user_first_name”, value: user_last_name.text});
    arr.push({key: “user_city”, value: user_city.text});
    arr.push({key: “user_state”, value: user_state.text});
    arr.push({key: “user_zipcode”, value: user_zipcode.text});
    arr.push({key: “user_auth_code”, value: user_auth_code});
    arr.push({key: “user_confirmed”, value: user_confirmed});
    arr.push({key: “university_id”, value: university_id.text});

    q.addEventListener(Query.QUERY_END, processQuery);
    q.addEventListener(Query.QUERY_ERROR, processQueryError);
    q.arrayInsert(”user”, arr);

  26. Alexandru Ghiura Says:

    From your error code you have a null object in your code.
    Maybe the q object is null.

    var q :IQuery = new Query();

  27. Rubeel Says:

    now i am lost, more errors,

    ypeError: Error #1009: Cannot access a property or method of a null object reference.
    at phi.db::Query/startConnection()[D:\Projects\Projects Flex\FlexDB\src\phi\db\Query.as:510]
    at phi.db::Query/execute()[D:\Projects\Projects Flex\FlexDB\src\phi\db\Query.as:222]
    at phi.db::Query/arrayInsert()[D:\Projects\Projects Flex\FlexDB\src\phi\db\Query.as:281]
    at views::register/processAdd()[D:\Documents and Settings\rubeel\My Documents\Flex Builder 3\roommate\src\views\register.mxml:37]
    at views::register/___register_Button1_click()[D:\Documents and Settings\rubeel\My Documents\Flex Builder 3\roommate\src\views\register.mxml:99]

    i think the way i am passing info to the insert or my array is not right

  28. Alexandru Ghiura Says:

    Can you send your project to my email ?

  29. Alexandru Ghiura Says:

    I have look at your code and the problem is that your query object is not connected to a database. Ex (in your code) :

    var q :IQuery = new Query();

    you must replace with:

    var q :IQuery = new Query();
    var db :IDatabase = Database.getInstance();

    q.connect(db.getDefaultConnectionName(), db);

  30. Cosmin Says:

    Updating :)
    this is a very usefull tool, i love it. I think if someone is affraid to put the conection inside as3 you cand change an put direct in database, or request them. I don;t see any security problem. not to mention a login and other bla bla bla…..

    nice job ! hai romania :D

    Let’s say you want to do something like limit to 10 rows but in the same time get the total rows in table.
    1.mydb.execute(”SELECT SQL_CALC_FOUND_ROWS * from t_user”+ins); where ins=limit 0,10
    mydb.totalRows=1;
    2. change the query.as add a boolean totalRows;
    conn.remoteObj.getOperation(”query”).send(q, conn.username, conn.password, conn.host, conn.db, totalRows);
    …..
    private function onQueryEnd(evt:ResultEvent):void
    {
    ……
    var allRecords:Array=evt.result as Array;
    NRows =allRecords[1];
    Records = allRecords[0] as ArrayCollection;
    (Nrows same code as like Records,but it is int)
    3. change database from amfphp
    public function query($strQuery, $strUser, $strPass, $strHost, $strDB, $totalRows){….

    if($totalRows==true)$maxCount=mysql_fetch_row(mysql_query(”SELECT FOUND_ROWS()”));
    …..

    $buildArray=array($rsResult,$maxCount[0]);
    $this->close($rsConnectionID);
    return $buildArray;

    if someone want more details…i explain more here

  31. Carlos Pacheco Says:

    Hi Alex; nice to meet you. I got a problem:
    I’m trying to update a table by using several ‘updates’ in one query string separated by ‘;’, but I got a query syntax error. Here is an example:
    ========================================
    var qxe1:String = “” ;
    for(var i:uint=0;i < dataP.length;i++){
    qxe1 += “UPDATE `orders_detail` “;
    qxe1 += ” SET `cantxcaja`=”+dataP.getItemAt(i).cantxemp.toString();
    qxe1 += “,`cantidad`=”+dataP.getItemAt(i).cantidad.toString();
    qxe1 += “,`config`=”+dataP.getItemAt(i).config.toString();
    qxe1 += ” WHERE `pkorders`=”+dataP.getItemAt(i).pkorders.toString();
    qxe1 += ” AND `prodid`=”+dataP.getItemAt(i).prodid.toString()+”; ”
    }
    query1.addEventListener(Query.QUERY_END, function (evt:Object):void{

    });
    query1.addEventListener(Query.QUERY_ERROR,function(e:Object):void{
    alert.error(”Ha ocurrido un error con el query ‘qxe1′” );

    return;
    });
    query1.execute(qxe1);
    ==============================================
    When use just one update works ok. Maybe missing something …option string??

  32. Enrique Lillo Says:

    Great tutorial! But as a step forward I’ve been looking for a way to put some values from the database into vars just to use them and print them inside the app.
    For example, I need to take 3 different values from 3 different queries. Then I want to sum all of them. I will show every one of them and the sum as text.

    What is the best way to do that?
    I’d really appreciate your help.

  33. oscar Says:

    Hello,

    if we put this in the swf:

    db.connect (conn1 “,” root “,” “,” localhost “,” flexdb “, true);

    decompile can steal a password from the database.

    greetings

  34. sreekumar Says:

    great tool ..works fine in my local machine…
    problem is when i uploaded the file to the web server it is not working ..no errors but the loading animation simply runs….
    what i did is ..
    i copied the amfphh folder from the local machine to the server ( made no changes ..it works fine. )
    and then the swf file from the flex project to a folder in the server….

    Please help ……

  35. oscar Says:

    with the password in the swf -> security = null or 0
    could explain the security of our project a very important part.

  36. oscar Says:

    security?

  37. Alexandru Ghiura Says:

    First let me answer to oscar. If you search “as3flexdb security” in Google you will see some posts about this problem but to tell you the easy way dont put your username and password in SWF send empty string and edit as3flexdb service the database.php file and put you user and password there.

    And about sreekumar problem I think is it’s about crossdomain problem. Search “crossdomain.xml” and mabe you will fix your problem.

  38. oscar Says:

    thanks, solved my doubt.
    one of the best libraries, a great job

    Greetings

  39. sreekumar Says:

    thanks..that solved the problem…Gr8 Lib … looking for more updates……

  40. Alan Says:

    Hi AS3FlexDB lovers,

    Could you please talk something about data paging with AS3FlexDB?

    By the way, AS3FlexDB seems not to support an SQL statement which includes more than one command. For example:

    START TRANSACTION;
    CREATE TEMPORARY TABLE a;
    INSERT HIGH_PRIORITY INTO a SELECT * FROM b;
    COMMIT;

  41. Mark Says:

    I am very new to Flex, can someone point me in the right direction. I am trying update a Mysql Database using AS3FlexDB and i am getting no where. Can someone please give step by step instruction or point me in the right direction? Thanks in advance.

  42. dave Says:

    Hi Great library, after messing with the php side of things all day , why is it so hard to just do a simple query ??

    I came across your contribution - GREAT ! It works straight away !

    I saw the INSERT question

    I did
    db = Database.getInstance();

    query = new Query();

    db.connect(”con1″, “user”, “pwd”, “host”, “table”, true);
    query.connect(”con1″, db);
    var myString:String;
    var arr:Array = new Array();
    arr.push({key: “column_name”, value: “value”});
    arr.push({key: “column_name”, value: “value”});
    myString = query.arrayInsert(”table”, arr);
    query.addEventListener(Query.QUERY_END, queryEnd);
    query.execute(myString);

    That worked for me , Once again Ghiura thanks a lot , hope one day to be able to repay your generosity.

  43. Alexandru Ghiura Says:

    Thx. I am very happy to hear you like it.

  44. Steve Says:

    Hi, first of all, great library.
    I walked through the tutorial with no issue at all, but I do have a problem I am facing.

    The thing I tried is to make a class that controls the connection to remote database, and return the mxml a ArrayCollection or some structure. However, once I do that–refactoring the functions you mentioned here to a class, the mxml start to complain about error 1099 reference to a null object.

    Should I use singleton?

    I would like to send you my source code, but in brief, my structure is like this:

    /*Remote Manager Class”
    package com.idot.managers
    {
    import flash.events.Event;
    import flash.events.EventDispatcher;

    import mx.collections.ArrayCollection;

    import phi.db.Database;
    import phi.db.Query;
    import phi.interfaces.IDatabase;
    import phi.interfaces.IQuery;

    public class RemoteDBManger extends EventDispatcher
    {
    // Database Objects
    private var db : IDatabase;
    private var query : IQuery;

    private var dataArray : ArrayCollection;

    public function get getDataArray():ArrayCollection{
    return dataArray;
    }

    public function RemoteDBManger() : void
    {

    }

    public function connectDB(hostName : String , dbName : String , tableName : String , SQLSyntax : String , username : String , password : String) : void
    {
    // Creat database instance
    db = Database.getInstance();
    db.connect(”Testing” , username , password , hostName , dbName , true);

    // Link Query with the database
    query = new Query();
    query.connect(”Testing” , db);
    query.addEventListener(Query.QUERY_ERROR , errorHandler);
    }

    public function excuteQuery(SQLSyntax : String) : void
    {
    query.addEventListener(Query.QUERY_END , endHandler );
    query.execute(SQLSyntax);
    }

    private function endHandler(evt : Event) : void
    {
    dataArray = query.getRecords();
    }

    private function errorHandler(evt : Event) : void
    {
    }
    }
    }

    /*main mxml where the remote manager is called*/

    private function init(event:Event):void
    {
    var remoteManage:RemoteDBManger;
    remoteManage = new RemoteDBManger();
    remoteManage.connectDB(”localhost”,”dot-backend”,”iVizWeb”,”SELECT * FROM iVizWeb WHERE 1″,”root”,”root”);
    // Provide Data Loader

    remoteManage.excuteQuery(”SELECT * FROM iVizWeb WHERE 1″);

    Alert.show(remoteManage.getDataArray().length.toString());

    }

  45. Alexandru Ghiura Says:

    Hy Steve, I have looked at your code and to be more specific the query execution is an async operation so after you call “executeQuery” the “dataArray” variable from RemoteDBManger is null because only after query is complete the dataArray will have the data and the query execution will be finish after your Alert.

    You can try :
    private var dataArray : ArrayCollection = new ArrayCollection();

    and make your “getDataArray()” bindable.

    I hope this will help you.

  46. Steve Says:

    Thanks for the help. I think the issue is exactly as you described. After debugging it today, I found that the query.getRecord() will only be invoked once the Query_End is set so there is a async operation happening.

    I have tried work around you listed here, but it didn’t work as I expected. Still the DataGrid I tried to bind this to would not gain any data value since the async problem. The only way I can make it work is exactly to make everything in the same file, and make clear which function to be called once program invokes the query_end event.

    I am still trying to see if other method would work as well, since i really want to refactor the functions into a class.

    Thanks for the suggestions, really appreciate it!

    Steve

  47. Jones Says:

    Thanks for this library. It has made life much easier. Can you provide a simple example of how to clear the previous connection or disconnect from a connection? Here is my situation; I use this to connect to a database to show database attributes in an infowindow. Every time I open the window I need a new query where I can pass in a value (from another source). I keep getting the error that the connection already exists. I understand why it is happening, but I am having trouble clearing the connection every time my Vbox component is opened. On creation complete clear the previous info??? Any sample on clearing the previous connection so that I can create the new one each time would be super helpful.

    Alex

  48. Alexandru Ghiura Says:

    Hi Jones,

    Thank you for your kind words.

    As per your problem the function you are looking for is:
    public function disconnect(name:String):void;

    But I suggest you to create a single connection when your application starts and after that to use only that connection. For ex:

    // on creationComplete for ex.
    Database.getInstance().connect(”conn1″, “user”, “pass”, “localhost”, “db”, true);

    // in you application, for ex in a popup
    db = Database.getInstance();
    query.connect(db.getDefaultConnectionName(), db);

  49. Christopher Says:

    I like this library.

    However, I tried to work with Store Procedure but unsuccessful.

    Could I call a Store Procedure in mySQL, pass some arguments to it and get the result returned from it using AS3FlexDB? How to do it?

    Thx.

  50. Bogdan Manate Says:

    Hello Cristopher, you can see an example on my blog http://www.bogdanmanate.com/2010/02/09/how-to-use-mysql-stored-procedures-with-as3flexdb/#more-44

  51. Wolfgang Says:

    Hi Alexandru,
    I’m relatively new to Flex and tried your MXML sample to read a MySQL table successfully. First of all, I’ve read the posts with the INSERTS (MXML-alternative) but only found the AS example in a post. Can you please post an MXML example - maybe with CRUD functionality in a DataGrid?
    And another question. Is it possible to use this lib for Advanced DataGrids? In my special case I need the data as HierarchicalData (parent/children).

  52. Carlos Garcia Says:

    I got scared about your project in several ways, so i will formalize it in some points:

    First: Complex queries should be treated as Stored Procedures. Hard-Coded queries and the need of recompile them for every database change is the payload of your structure.

    Design -> What about the SOC ( Separation of Concerns ) ?
    Security -> Queries will be shown inside the HTTP traffic since they can be catched as packages with any wireless device with monitor-mode enabled. HTTPS is a must.
    Security -> … if someone manages to decompile your app … would it be not a security concern if that people have acess to table names, or worst … database user and password ??

  53. Alexandru Ghiura Says:

    There are a lot of topics about security in AS3FlexDB on the internet you can google it to see some fixes.

  54. Nicholas Says:

    Hi,

    I tried using the as3FlexDb to connect to a test database as per your example.

    Unfortunately I keep getting the following error:

    [FaultEvent fault=[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.BadVersion: : url: 'http://localhost/amfphp/gateway.php'"] messageId=”DF1B39B7-11C9-DBC1-9852-3E92254F4871″ type=”fault” bubbles=false cancelable=true eventPhase=2]
    at phi.db::Query/onQueryFault()[D:\Projects\Projects Flex\FlexDB\src\phi\db\Query.as:505]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:198]
    at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:225]
    at mx.rpc::Responder/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:53]
    at mx.rpc::AsyncRequest/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:103]
    at mx.messaging::ChannelSet/faultPendingSends()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1482]
    at mx.messaging::ChannelSet/channelFaultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:975]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.messaging::Channel/connectFailed()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\Channel.as:997]
    at mx.messaging.channels::PollingChannel/connectFailed()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\PollingChannel.as:354]
    at mx.messaging.channels::AMFChannel/statusHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:390]

    It may be something in my installation but I can’t seem to figure it out.

    Maybe you can help me out. What am I doing wrong. I basically used the code you provided in the first example.

    Thanks,
    Nicholas

  55. C. Bascil Says:

    Please suppy us with new tutorials about how to use AS3FlexDB 2.0 in pure actionscript code. There aren’t any tutorials about the new version.

  56. samiksha pandey Says:

    hi all
    i am a newbie to flex…
    my question is ..
    i have a datagrid which prints results after querying from mysql database .. i want the rows of my datagrid to have a button each which when clicked will lead me to another page OR in each row i should be able to click somewhere which will lead me to another page … please reply asap
    thank you in advance

  57. Yarek Says:

    Hello,
    How I can delete rows from database using MXML or AS3?

  58. Leon Says:

    Hi, great library.

    There are numerous links to iTutorials.ro for as3flexdb tutorials, but the site only displays “Account Suspended”. Are these tutorials hosted somewhere else now?

  59. Alexandru Ghiura Says:

    No, sorry for that but that account will be deleted, but you should have a look here: http://www.sephiroth.it/tutorials/flashPHP/as3flexdb/


Leave a Reply