Conectando-se no Banco de Dados com ActionScript 3 e {mdm} Zinc:
Antes de Acompanhar este tutorial você deve ver uma rápida explicação que eu dou sobre o componente “SWC” que acompanha o novo {mdm} Zinc 3.0 que faz com que o Adobe Flash CS3 reconheça as classes do {mdm} Zinc 3.0.
Tutorial: Preparando o Flash para usar o Actionscript 3 com o {mdm} Zinc 3.0.
Bom, agora que seu Adobe Flash CS3 já “aceita” as classes do {mdm} Zinc 3.0, chegou a hora de baixar os arquivos fontes deste tutorial.
Este tutorial assim como o anterior não vai ter muita firula, toda a explicação eu deixei para o código AS3, apenas mostrarei o código aqui pois se alguém estiver com pressa de ver algum exemplo poderá ver no código.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Instruções de Import.
import mdm.*;
import flash.events.*;
import flash.display.*;
import fl.controls.ComboBox;
import fl.data.DataProvider;
//Fim dos Imports.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Inicia o gerenciamento do {MDM} Zinc, e passa como parametro este swf.
mdm.Application.init (this);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Algumas propriedades pré-definidas.
this.cadastrar_btn.enabled = false;
this.alterar_btn.enabled = false;
this.deletar_btn.enabled = false;
this.desconectar_btn.enabled = false;
this.cadastrados_btn.enabled = false;
this.comboAltera_cb.enabled = false;
this.comboDeleta_cb.enabled = false;
//fim das propriedades pré-definidas.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Eventos.
this.apagar_btn.addEventListener (MouseEvent.CLICK, apagarCampos);
this.cancelar_btn.addEventListener (MouseEvent.CLICK, apagarCampos);
this.conectar_btn.addEventListener (MouseEvent.CLICK, conMySQL);
this.desconectar_btn.addEventListener (MouseEvent.CLICK, exitMySQL);
this.cadastrar_btn.addEventListener (MouseEvent.CLICK, cadastrar);
this.cadastrados_btn.addEventListener (MouseEvent.CLICK, getAll);
this.deletar_btn.addEventListener (MouseEvent.CLICK, deletar);
this.alterar_btn.addEventListener (MouseEvent.CLICK, updateUser);
this.comboAltera_cb.addEventListener (Event.CHANGE,preencheUpdates);
//Fim eventos.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Esta função apaga os campos da área de Update ou de Cadastramento de acordo com o botão que é precionado.
function apagarCampos (evt:MouseEvent):void
{
if (evt.target.name == “apagar_btn”)
{
this.nome_txt.text = “”;
this.senha_txt.text = “”;
}
else if (evt.target.name == “cancelar_btn”)
{
this.uNome_txt.text = “”;
this.uSenha_txt.text = “”;
this.comboAltera_cb.selectedIndex = 0;
}
}
//Fim da função.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Para quem acompanhou o tutorial de conecção com banco de dados, já percebeu que não mudou nada.
//A unica coisa que muda é os eventos do AS3.
function conMySQL (evt:MouseEvent):void
{
//Variavel Booleana para conectar, ela só vai retornar FALSE caso o…
//…{mdm} Zinc não consiga se conectar ao MySQL.
var conectou:Boolean = mdm.Database.MySQL.connect (“localhost”, “3306″, true, “root”, “”, “dbZinc”);
if (conectou)
{
preencheCombo (evt);
//Função do {mdm} Zinc que cria uma variavel global no flash.
//mdm.Flash.setVar(“nome da variavel”, “valor”);
mdm.Flash.setVar (“conectado”,”sim”);
this.resultado_txt.text = “Conectado”;
//Desebilita alguns Botões.
this.conectar_btn.enabled = false;
//Habilita alguns Botões.
this.comboAltera_cb.enabled = true;
this.comboDeleta_cb.enabled = true;
this.cadastrar_btn.enabled = true;
this.alterar_btn.enabled = true;
this.deletar_btn.enabled = true;
this.desconectar_btn.enabled = true;
this.cadastrados_btn.enabled = true;
}
else
{
//Se retornar false…
this.resultado_txt.text = “Não foi possivel se conectar ao servidor.” + “\n”;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Função que desconecta do MySQL.
function exitMySQL (evt:MouseEvent):void
{
//cria uma variavel que irá conter o valor que foi criado na função anterior…
//…usando a função do {mdm} Zinc (mdm.Flash.setVar(“nome da variavel”, “valor”)).
var coneccao = mdm.Flash.getVar (“conectado”);
//Verifica se a variavel tem o valor (“sim”);
if (coneccao == “sim”)
{
//se for “sim”, desconecta do MySQL.
mdm.Database.MySQL.close ();
//Preenche o campo de texto resultado_txt com o seguinte valor.
this.resultado_txt.text = “A conexão foi encerrada”;
//usa a mesma função do {mdm} Zinc para setar a variavel “conectado” para “nao”.
mdm.Flash.setVar (“conectado”,”nao”);
//Habilita alguns objetos.
this.conectar_btn.enabled = true;
//Desebilita alguns objetos.
this.cadastrar_btn.enabled = false;
this.alterar_btn.enabled = false;
this.deletar_btn.enabled = false;
this.desconectar_btn.enabled = false;
this.cadastrados_btn.enabled = false;
this.comboAltera_cb.enabled = false;
this.comboDeleta_cb.enabled = false;
}
else
{
//Se não estiver conectado…
this.resultado_txt.text = “Você não está conectado ainda”;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para cadastrar valores no Banco de Dados.
function cadastrar (evt:MouseEvent):void
{
//Verifica se não esta sendo cadastrado valores em branco.
if (this.nome_txt.text == “” && this.senha_txt.text == “”)
{
//Se os valores forem em branco…
this.resultado_txt.text = “Você deve preencher os campos antes de cadastrar um usuario.”;
}
else
{
//Se os campos estiverem preenchidos faz uma QUERY na tabela “teste” com os valores dos…
//…campos de texto nome_txt e senha_txt.
var gravar:Boolean = mdm.Database.MySQL.runQuery (“INSERT INTO teste(nome,senha) VALUES(‘” + this.nome_txt.text + “‘,’” + this.senha_txt.text + “‘)”);
if (gravar)
{
//Se conseguir cadastrar.
preencheCombo (evt);
this.nome_txt.text = “”;
this.senha_txt.text = “”;
this.uNome_txt.text = “”;
this.uSenha_txt.text = “”;
this.resultado_txt.text = “Cadastrado!”;
}
else
{
//Se não conseguir cadastrar.
this.resultado_txt.text = “Erro ao cadastrar.”;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function preencheCombo (evt:MouseEvent):void
{
//Faz uma “ligação” com o Banco de dados.
mdm.Database.MySQL.runQuery (“SELECT * FROM ” + “teste”);
//Criar uma variavel do tipo (dataProvider).
var dados:DataProvider = new DataProvider();
//Adiciona um valor à variavel dados.
dados.addItem ({label:”Lista de usuários”});
//Adiciona à variavel dataSet todos os valores que estiverem registrados no banco de dados.
var dataSet:Array = mdm.Database.MySQL.getData ();
//Faz um loop FOR para iserir valores na variavel dados.
for (var i:Number = 0; i < dataSet.length; i++)
{
//O valor do tipo LABEL é a parte “visivel” de quando se usa um ComboBox…
//… o valor DATA é os valores que o programador vai precisar futuramente para fazer futuras QUERIES…
dados.addItem ({label:mdm.Database.MySQL.getField (i, 1), data:mdm.Database.MySQL.getField (i, 0)});
}
//Preenche dois combobox com os valores da variavel “dados”.
this.comboAltera_cb.dataProvider = dados;
this.comboDeleta_cb.dataProvider = dados;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//A função preencheUpdates é um exemplo de uso da propriedade “DATA” do combobox, mas aqui é citada como “VALUE”.
function preencheUpdates (event:Event):void
{
//Faz uma QUERY na tabela “teste” com o valor do item selecionado no ComboBox.
var buscaMySQL:Boolean = mdm.Database.MySQL.runQuery (“SELECT * FROM teste WHERE id =” + this.comboAltera_cb.value);
//Se conseguiu encontrar a tabela…
if (buscaMySQL)
{
//Cria novamente uma variavel e preenche ela com os valores pegos do Banco de dados.
var dados:Array = mdm.Database.MySQL.getData ();
//E com o LOOP FOR coloca os valores que vieram do Banco de dados nos respectivos campos do palco.
for (var i:Number = 0; i < dados.length; i++)
{
this.uNome_txt.text = dados[i][1];
this.uSenha_txt.text = dados[i][2];
}
}
else
{
//Se nã conseguiu encontrar a tabela…
this.resultado_txt.text = “Erro na conexão, ou sua busca não teve exito.”;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Agora uma QUERIE com a instrução DELETE
function deletar (evt:MouseEvent):void
{
//Se o comboDeleta_cb estiver com o valor padrão selecionado…
if (this.comboDeleta_cb.selectedIndex == 0)
{
//Mostra este aviso no campo de texto “resultado_txt”.
this.resultado_txt.text = “Primeiro selecione um usuário para deletar.”;
}
else
{
//Se tiver algum item selecionado e que não seja o valor padrão…
//Cria uma variavel que irá conter uma função do {mdm} Zinc que retorna um valor booleano.
//Se este valor for TRUE, significa que teve sucesso na QUERIE
var deletar:Boolean = mdm.Database.MySQL.runQuery (“DELETE FROM teste WHERE id=’” + this.comboDeleta_cb.value + “‘”);
if (deletar)
{
this.resultado_txt.text = “Tarefa realizada com sucesso.”;
preencheCombo (evt);
}
else
{
//Se for FALSE, significa que ouve um erro de conecção por parte do {mdm} Zinc.
this.resultado_txt.text = “A tarefa não pode ser realizada com sucesso.”;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para execuar um UPDATE na tabela “teste”
function updateUser (evt:MouseEvent):void
{
//Se o comboAltera_cb estiver com o valor padrão selecionado…
if (this.comboAltera_cb.selectedIndex == 0)
{
//Mostra este aviso no campo de texto “resultado_txt”.
this.resultado_txt.text = “Primeiro selecione um usuário para alterar.”;
}
else
{
//Se tiver algum item selecionado e que não seja o valor padrão…
//Cria uma variavel que irá conter uma função do {mdm} Zinc que retorna um valor booleano.
//Se este valor for TRUE, significa que teve sucesso na QUERIE
//Esquema do comando UPDATE (UPDATE “tabela” SET “campo1″ = “valor1″, “campo2″ = “valor2″ condição WHERE que atualiza pelo valor “id” que provem do item selecionado no combobox.
var atualiza:Boolean = mdm.Database.MySQL.runQuery (“UPDATE teste SET nome=’” + this.uNome_txt.text + “‘, senha = ‘” + this.uSenha_txt.text + “‘ WHERE id=” + this.comboAltera_cb.value);
if (atualiza)
{
preencheCombo (evt);
this.uNome_txt.text = “”;
this.uSenha_txt.text = “”;
this.resultado_txt.text = “Tarefa realizada com sucesso.”;
}
else
{
//Se for FALSE, significa que ouve um erro de conecção por parte do {mdm} Zinc.
this.resultado_txt.text = “A tarefa não pode ser realizada com sucesso.”;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Esta função pega todos os valores da tabela “teste” e mostra no campo de texto “resultado_txt”.
function getAll (evt:MouseEvent):void
{
//Variavel que contem o nome da tabela.
var tableName:String = “teste”;
//Função do {mdm} Zinc que faz o SELECT na tabela.
mdm.Database.MySQL.runQuery (“SELECT * FROM “+tableName);
//Variavel que como o nome já diz vai conter todos os valores vindos da tabela.
var tudo:Array = mdm.Database.MySQL.getData();
//Uma variavel que vai organizar os valores
var texto:String = “”;
//Muito cuidado nesta parte, este LOOP FOR lida com uma Array BIDIMENSIONAL…
//Onde a variavel (“i”) vai representar uma linha…
//… e a variavel (“n”) vai representar uma coluna.
for (var i:Number = 0; i<tudo.length; i++)
{
for (var n:Number = 0; n<tudo[0].length; n++)
{
texto += int(i+1) +” = “+(n+1)+” = “+tudo[i][n]+”|”;
}
texto += “\n”;
}
this.resultado_txt.text = texto;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Bom, a principio seria isso, se tiver alguma duvida não deixe de comentar na área dos Usuários.
