ALK Armando Leopoldo Keller


Classe para utilização de SQL em AIR (Flash, Flex)
5 Abril, 2008, 7:42 pm
Arquivado em: AIR, AS 3.0, Flash geral, Flex | Etiquetas: , , , , , , ,

Neste tutorial mostrarei como utilizar uma classe que eu criei para facilitar o uso de SQL em AIR (tanto para flash quanto para flex)
A classe é esta:

/*
################################################
# #
# Classe : DB (com.alkeller.air.DB) #
# Autor : Armando Leopoldo Keller #
# Versão : 1.0 #
# Contato : alksk8@hotmail.com #
# Blog : http://alkeller.wordpress.com #
# Documentaçao em breve no blog #
# #
################################################
——- Deixe os creditos na classe ———-
*/
package com.alkeller.air
{
// Imports
import flash.data.SQLResult;
import flash.filesystem.File;
import flash.data.SQLStatement;
import flash.data.SQLConnection;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
import flash.errors.SQLError;

// Classe;
public class DB
{
// Variaveis utilizadas;
private static var conectado:Boolean = false;
private static var dbFile:File
private static var conn:SQLConnection
private static var _sqlStatement:SQLStatement;
private static var resultado:SQLResult;
private static var retornoString:String;
private static var retornoObjeto:Object;

// Funçao Inicia :utilizada para conectar com o banco de dados;
public static function Inicia(_nome:String):String
{
conn = new SQLConnection();
dbFile = File.applicationStorageDirectory.resolvePath(String(_nome+”.db”));
try
{
conn.open(dbFile);
conectado = true;
trace(”Conectado com “+_nome+”.db”);
retornoString = “Conectado com “+_nome+”.db”;
}
catch (error:SQLError) {
conectado = false;
retornoString = “Falha ao conectar: “+error.message+”\nDetalhes: “+error.details;
}
return retornoString;
}
// Funçao executeQuery: Utilizada para executar um comando SQL(verificar quais são aceitos pelo AIR);
// Retorno: SQLResult –> http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/data/SQLResult.html
// ou String de erro;
public static function executeQuery(_sql:String):Object
{
if(conectado == true)
{
_sqlStatement = new SQLStatement();
_sqlStatement.sqlConnection = conn;
_sqlStatement.text = _sql;
try
{
_sqlStatement.execute();
resultado = _sqlStatement.getResult();
retornoObjeto = resultado;
}
catch (error:SQLError)
{
retornoString = “Falha ao executar(”+_sql+”): “+error.message+”\nDetalhes: “+error.details;
}
return retornoObjeto?retornoObjeto:retornoString;
}
else
{
return “Não conectado!”;
}
}
}
}

Classe para download: http://paginas.terra.com.br/lazer/alksk8/DB.as

Como utilizar:
1 - Importe a classe:

// OBS: Aqui é bom verificar se a classe esta no local certo com/alkeller/air/
import com.alkeller.air.*;
// ou
import com.alkeller.air.DB;

2 - Inicie o banco:

DB.Inicia(”teste”); // sendo que teste é o nome do banco

3 - Se as tabelas não existirem, crie elas:

DB.executeQuery(”CREATE TABLE IF NOT EXISTS testando (id INTEGER PRIMARY KEY AUTOINCREMENT,nome TEXT,sobrenome TEXT)”);

4.1 - Execute as Querys que desejar, por exemplo inserir alguns dados:

DB.executeQuery(”INSERT INTO testando (id,nome,sobrenome) VALUES (null,’ARMANDO LEOPOLDO’,'KELLER’)”);

4.2 - Exemplo de como buscar dados:

var obj:Object = DB.executeQuery(”SELECT * FROM testando”).data;
for(var i:uint=0; i < obj.length; i++)
{
trace(”linha: “+i)
for(var j:Object in obj[i])
{
trace(j+”: “+obj[i][j])
}
}

Aproveitem a classe :D

Em breve colocarei aqui este tutorial em video.


10 Comentários até o momento
Deixe um comentário

Bom trabalho, mas eu acho legal usar o protótipo de ORM em AIR feito pelo Christophe

http://coenraets.org/blog/2007/10/annotating-actionscript-classes-with-custom-metadata-simple-orm-framework-for-air/

Esse simples exemplo pode ser aproveitado para criar seu proprio ORM e otimizar de acordo com a sua necessidade.

Abraços.

Comentário de Mario Junior 7 Abril, 2008 @ 12:08 pm

Classe legal mas….usar esse tipo de banco interno pra fazer sistema é a maior besteira que se pode fazer.

Lembrando que esse banco do AIR pode corromper e também não consigo trabalhar com grandes quantidades de registro.

Assim sendo, só usa esse tipo de banco para poucos registros e consultas simples e nada a mais.

Flw guri…

Comentário de Jonathan 7 Abril, 2008 @ 3:05 pm

Jonathan, o banco do AIR é o SQLite , que é muito bom por sinal, e pode fazer backup e tal, site do SQLite : http://www.sqlite.org/

Comentário de alkeller 7 Abril, 2008 @ 3:12 pm

Finalmente encontrei alguem que faz algo prático e funcional. Melhor… em português, quer mais… impossivél, estou dias procurando e não encontrava, sorte tentar procurar pelo flash e não pelo flex.

Olha, PARABÈNS… show de bola, ainda não testei, mas vou testar daqui a pouco. Eu só espero que um dia você conhece a colocar tutoriais.. para iniciantes principalmente.

Um grande abraço.
Maykson

Comentário de Maykson 8 Abril, 2008 @ 1:32 pm

alkeller, o banco de SQLite ja vem imbutido no sdk do air ou preciso instalar ele manualmente?

Comentário de [tadeu] 1 Maio, 2008 @ 11:14 am

Ja vem junto.

Comentário de alkeller 1 Maio, 2008 @ 11:26 am

[...] AIR para consultar SQL com Flash e Flex; [...]

Pingback de Aplicações usando ambiente Flex:MXML-SWF 9.0 « Blender 3D carioca - Rafael Junqueira 6 Maio, 2008 @ 8:24 am

Eu testei a classe, mas na hora que mando criar o banco ele não aparece na pasta da aplicação.

Comentário de Flávio 25 Julho, 2008 @ 2:38 pm

Seria legal se ela informasse se ele chegou a executar sem erros o SQL informado.

Comentário de Flávio 28 Julho, 2008 @ 4:44 pm

Flávio, como havia te dito, eu ainda estou dando uma melhorada na classe, mas devido a troca de trabalho, e o outro projeto (http://code.google.com/p/goas3) , eu ando meio sem tempo.
Primeiro vou melhorar o modo como ele retorna o sql.

Quanto aos erros de sql, eu achei uma ideia interessante, até de criar eventos para as querys.

Assim que eu tiver um tempo eu vou dar uma olhada nisso.

Obrigado pelas sugestoes.

Comentário de alksk8 31 Julho, 2008 @ 10:24 pm



Deixe um comentário
Linhas e parágrafos quebram automaticamente, endereços de email não serão mostrados, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>