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 :

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.
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: Actionscript, Architecture, AS3, AS3FlexDB, Flex
January 17th, 2009 at 7:00 am
This library is very interesting, you are using in production?
January 17th, 2009 at 12:14 pm
I am not sure if I have understand your question but yes I use this library in the process of production of my software.
January 26th, 2009 at 10:54 am
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
January 26th, 2009 at 9:46 pm
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.
January 27th, 2009 at 3:24 am
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…
March 3rd, 2009 at 2:28 pm
[...] 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 [...]
March 5th, 2009 at 12:36 am
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
March 6th, 2009 at 10:20 am
You can read this post for your problem : http://itutorials.ro/viewtopic.php?f=14&t=27
April 10th, 2009 at 6:57 pm
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
April 11th, 2009 at 12:45 am
var myID :Number = 2;
query.execute(”SELECT * FROM users WHERE id = “+ myID);
April 11th, 2009 at 3:51 pm
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?
April 11th, 2009 at 7:36 pm
public var myID :String = ‘abc’;
query.execute(”SELECT * FROM users WHERE id = ‘ “+ myID + ” ‘ “);
April 11th, 2009 at 10:42 pm
Hey thanx man….
it worked..
nice app…
Keep up the work..
April 18th, 2009 at 10:37 am
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
May 7th, 2009 at 6:14 pm
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!
May 7th, 2009 at 8:06 pm
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
May 7th, 2009 at 9:15 pm
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!
May 7th, 2009 at 9:15 pm
I mean “no more” screen flashing …!
May 7th, 2009 at 9:25 pm
Good job
May 10th, 2009 at 11:22 pm
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
Queryobject 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!
May 10th, 2009 at 11:44 pm
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!
May 10th, 2009 at 11:51 pm
Read this post: http://itutorials.ro/viewtopic.php?f=14&t=25&start=0&st=0&sk=t&sd=a&hilit=get
May 11th, 2009 at 12:32 am
That did it! Thanks!!
May 16th, 2009 at 12:36 am
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!
May 20th, 2009 at 3:26 pm
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);
May 20th, 2009 at 5:46 pm
From your error code you have a null object in your code.
Maybe the q object is null.
var q :IQuery = new Query();
May 21st, 2009 at 10:54 pm
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
May 21st, 2009 at 11:04 pm
Can you send your project to my email ?
May 24th, 2009 at 10:12 pm
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);
June 10th, 2009 at 2:02 pm
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
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
June 12th, 2009 at 5:33 am
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??
August 21st, 2009 at 6:44 am
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.
August 21st, 2009 at 9:03 pm
Hello,
if we put this in the swf:
db.connect (conn1 “,” root “,” “,” localhost “,” flexdb “, true);
decompile can steal a password from the database.
greetings
August 24th, 2009 at 7:16 pm
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 ……
September 12th, 2009 at 5:26 pm
with the password in the swf -> security = null or 0
could explain the security of our project a very important part.
September 15th, 2009 at 3:26 pm
security?
September 16th, 2009 at 8:14 pm
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.
September 17th, 2009 at 9:31 pm
thanks, solved my doubt.
one of the best libraries, a great job
Greetings
October 10th, 2009 at 11:38 am
thanks..that solved the problem…Gr8 Lib … looking for more updates……
November 6th, 2009 at 11:35 am
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;
December 20th, 2009 at 4:12 am
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.
January 22nd, 2010 at 6:30 pm
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.
January 22nd, 2010 at 8:26 pm
Thx. I am very happy to hear you like it.
January 28th, 2010 at 7:08 pm
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());
}
January 29th, 2010 at 12:33 am
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.
January 29th, 2010 at 5:02 am
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
February 4th, 2010 at 6:08 am
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
February 4th, 2010 at 12:34 pm
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);
February 9th, 2010 at 5:15 pm
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.
February 9th, 2010 at 11:57 pm
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
February 22nd, 2010 at 1:23 am
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).
March 1st, 2010 at 10:13 am
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 ??
March 1st, 2010 at 10:43 am
There are a lot of topics about security in AS3FlexDB on the internet you can google it to see some fixes.
March 8th, 2010 at 6:28 pm
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
March 16th, 2010 at 3:18 pm
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.
April 20th, 2010 at 9:21 pm
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
April 25th, 2010 at 7:47 pm
Hello,
How I can delete rows from database using MXML or AS3?
June 3rd, 2010 at 12:18 pm
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?
June 3rd, 2010 at 12:30 pm
No, sorry for that but that account will be deleted, but you should have a look here: http://www.sephiroth.it/tutorials/flashPHP/as3flexdb/