Arquivado em: AIR, AS 3.0, Flash geral, Flex | Tags: AIR, AS 3, Database, DB, flash, Flex, SQL, SQLite
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
Em breve colocarei aqui este tutorial em video.
13 Comentários até o momento
Deixe um comentário
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
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 por Mario Junior 7 Abril, 2008 @ 12:08 pmClasse 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 por Jonathan 7 Abril, 2008 @ 3:05 pmJonathan, 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 por alkeller 7 Abril, 2008 @ 3:12 pmFinalmente 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.
Comentário por Maykson 8 Abril, 2008 @ 1:32 pmMaykson
alkeller, o banco de SQLite ja vem imbutido no sdk do air ou preciso instalar ele manualmente?
Comentário por [tadeu] 1 Maio, 2008 @ 11:14 amJa vem junto.
Comentário por alkeller 1 Maio, 2008 @ 11:26 am[...] AIR para consultar SQL com Flash e Flex; [...]
Pingback por Aplicações usando ambiente Flex:MXML-SWF 9.0 « Blender 3D carioca - Rafael Junqueira 6 Maio, 2008 @ 8:24 amEu testei a classe, mas na hora que mando criar o banco ele não aparece na pasta da aplicação.
Comentário por Flávio 25 Julho, 2008 @ 2:38 pmSeria legal se ela informasse se ele chegou a executar sem erros o SQL informado.
Comentário por Flávio 28 Julho, 2008 @ 4:44 pmFlá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 por alksk8 31 Julho, 2008 @ 10:24 pmOla, bacana sua classe, porem ao tentar executar um select: var obj:Object = DB.executeQuery(”SELECT * FROM…
da o seguinte erro: Access of undefined property obj
o que pode estar acontecendo?
Comentário por Lino 13 Novembro, 2008 @ 12:18 pmTem como colocar o resto do codigo ?
Comentário por alksk8 15 Novembro, 2008 @ 12:13 amOPa, seguinte velho, o erro acontecia porque eu estava tentando executar esse carinha:
var obj:Object = DB.executeQuery(”SELECT * FROM
testando”).data;
for(var i:uint=0; i < obj.length; i++)….
fora de uma função, foi so criar a function que funcionou blzinha!
Comentário por Lino 15 Novembro, 2008 @ 8:05 pmValeu!