terça-feira, 9 de fevereiro de 2010

AS3 - Flash com Banco de Dados DB - Adobe Air

Nesse tutorial iremos aprender uma função muito legal do AS3, onde vocês irão aprender a conectar com um banco de dados .DB

Para começar é necessário a criação do DB, iremos utilizar a classe file e algumas classes de dados e de eventos do SQL


import flash.data.SQLConnection;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
var conn:SQLConnection = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
var dbFile:File = File.applicationStorageDirectory.resolvePath("DBSample.db");
conn.openAsync(dbFile);
function openHandler(event:SQLEvent):void
{
           trace("the database was created successfully");
}
function errorHandler(event:SQLErrorEvent):void
{
           trace("Error message:", event.error.message);
           trace("Details:", event.error.details);
}

o codigo acima cria no diretorio de armazenamento do aplicativo um arquivo chamado DBSample.db. Agora e necessário a criação de uma tabela neste DB

Com o código abaixo serve para a criação de uma tabela. Altere e utilize da maneira que precisar

import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
// ... cria e abre o db usando uma conexão chamada conn
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS employees (" +
" empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
" firstName TEXT, " +
" lastName TEXT, " +
" salary NUMERIC CHECK (salary > 0)" +
")";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, createError);
createStmt.execute();
function createResult(event:SQLEvent):void
{
          trace("Table created");
}
function createError(event:SQLErrorEvent):void
{
          trace("Error message:", event.error.message);
          trace("Details:", event.error.details);
}

O codigo acima executa uma query sql que gera uma tabela chamada employees, o mesmo codigo pode ser utilizado para envio de outras querys menos a SELECT, atraves do codigo acima você pode utilizar DELETE, INSERT e UPDATE.


Abaixo existe um exemplo de como resgatar os dados da tabela utilizando o sql SELECT

var selectStmt:SQLStatement = new SQLStatement();
// a conexão chamada conn deve ter sido criada anteriormente
selectStmt.sqlConnection = conn;
selectStmt.text = "SELECT itemId, itemName, price FROM products";
// eesultHandler e errorHandler são listados abaixo
selectStmt.addEventListener(SQLEvent.RESULT, resultHandler);
selectStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectStmt.execute();

As funções abaixo irão solicitar as informações pegas pelo selectStmt e preencher uma lista

function resultHandler(event:SQLEvent):void
{
       var result:SQLResult = selectStmt.getResult();
       var numResults:int = result.data.length;
       for (var i:int = 0; i < numResults; i++) {
           var row:Object = result.data[i];
           var output:String = "itemId: " + row.itemId;
           output += "; itemName: " + row.itemName;
           output += "; price: " + row.price;
           trace(output);
       }
}

function errorHandler(event:SQLErrorEvent):void {
        // Information about the error is available in the // event.error property, which is an instance of
        // the SQLError class.
}


O exemplo acima pode ser adaptado a outras aplicações, todos os comandos necessários para manipulação de um banco de dados simples está aqui.

Enjoy.

Nenhum comentário: