Posts Tagged ‘AS3FlexDB’

AS3FlexDB

Friday, January 16th, 2009

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.”