Conexão com Banco de Dados usando AS2

22 09 2008

Conexão com Banco de Dados usando AS2.

Antes de mais nada você deve fazer o download do banco de dados com a tabela e os compos, nele você vai encontrar um arquivo de texto,

de um import no seu phpMyAdmin e aponte para o arquivo que você acabou de fazer download.

Os arquivos fonte se encontram no final deste tutorial.

A primeira coisa a fazer é colocar todos os objetos no palco e instanciar eles:

# Nomes de instância:

Área de cadastrar:

(1): nome_txt

(2): senha_txt

(3): inserir_btn

Área de deletar:

(4): comboDelete_cb

(5): deletar_btn

Área de atualizar:

(6): comboUpdate_cb

(7): uNome_txt

(8): uSenha_txt

(9): update_btn

Ícone de estado:

(10): icoConect_mc

Campo de “Debug“:

(11): resultado_txt

Conexão:

(12): conectar_btn

(13): desconectar_btn

Obs: Todos os campos de texto, com exeção do resultado_txt, são do tipo imput.

Depois de definido o layout, chega a hora da programação, eu comentei ao máximo o código de ActionScript2 para que você possa entender o que está fazendo.

//Propriedades pré definidas.
//Desabilita os botões.
inserir_btn.enabled = false;
deletar_btn.enabled = false;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Adiciona um ouvidor de eventos no ComboBox (comboUpdate_cb).
comboUpdate_cb.addEventListener ("change",preencheCamposUpdate);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Ao precionar o botão (conectar_btn).
conectar_btn.onPress = function ()
{
//Chama a função do {mdm} Zinc que busca e conecta ao seu banco de dados
//se conseguir conectar retorna (true) caso contrario (false).
var estaConectado:Boolean = mdm.Database.MySQL.connect ("localhost", "3306", true, "root", "", "dbZinc");
// A condicional if() testa se uma condição é verdaderia, ou seja se a variavel (estaConectado) for verdadeira...
//...executa um bloco de código
if (estaConectado)
{
//A função do {mdm} Zinc (mdm.Flash.setVar("nomeVariavel", "valorVariavel"), cria uma variavel global no swf.
mdm.Flash.setVar ("conectado","sim");
icoConect_mc.gotoAndStop (2);
inserir_btn.enabled = true;
deletar_btn.enabled = true;
preencheCombo ();
}
else
{
//Se não for possivel conectar mostra uma janela com a seguinte mensagem.
mdm.Dialogs.prompt ("\n" + "Não foi possiveel se conectar ao servidor" + "\n");
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Ao prescionar o botão (desconectar_btn).
desconectar_btn.onPress = function ()
{
//busca no swf pela variavel (conectado), a que foi criada com o {mdm} Zinc
var coneccao = mdm.Flash.getVar ("conectado");
//Se o valor dela for "sim".
if (coneccao == "sim")
{
//Desconecta do MySQL.
mdm.Database.MySQL.close ();
//Avisa que desconectou.
mdm.Dialogs.prompt ("A conexão foi encerrada");
//E seta o valor da variavel (conectado) para "nao".
mdm.Flash.setVar ("conectado","nao");
icoConect_mc.gotoAndStop (1);
inserir_btn.enabled = false;
deletar_btn.enabled = false;
}
else
{
mdm.Dialogs.prompt ("Você não está conectado ainda");
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Aqui nesta função vc vai inserir seu primeiro valor no banco de dados
inserir_btn.onPress = function ()
{
//Cria um variavel Boleana que irá realizar a inserção de valores no banco de dados
//Veja como funciona
//mdm.Database.MySQL.runQuery("(query que vc pretende realizar) (nome da tabela(campos,separados por virgula)) VALUES(campo de texto "nome_txt"),(campo de texto "senha_txt"))
var gravar:Boolean = mdm.Database.MySQL.runQuery ("INSERT INTO teste(nome,senha) VALUES('" + _root.nome_txt.text + "','" + _root.senha_txt.text + "')");
_root.nome_txt.text = "";
_root.senha_txt.text = "";
//Se realizar a QUERY com sucesso
if (gravar)
{
//Mostra na tela a seguinte mensagem
mdm.Dialogs.prompt ("Cadastrado");
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Aqui nesta função vc vai fazer a sua primeira instrução delete no seu banco de dados
deletar_btn.onPress = function ()
{
//Repare que nesta QUERY a instrução "INSERT INTO" mudou para "DELETE FROM"


//e veja tambem que ela faz a seguinte condição "WHERE id", ou seja deletar pelo ID
//neste caso o ID se encontra no valor do "nome" selecionado no ComboBox (comboDelete_cb)
var deletar:Boolean = mdm.Database.MySQL.runQuery ("DELETE FROM teste WHERE id='" + comboDelete_cb.value + "'");
if (deletar)
{
mdm.Dialogs.prompt ("Deletado");
preencheCombo ();
}
else
{
//Se nao conseguir realizar a tarefa.
mdm.Dialogs.prompt ("Erro ao realizar a tarefa");
}
};


////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Função importante no programa.
//Busca os valores no Banco de dados e coloca num array.
//Acompanhe...
function preencheCombo ()
{
//cria o Array que irá conter os valores vindos do Banco de Dados.
var dados:Array = new Array ();
//O primeiro valor a ser inserido é o texto ("--- Selecione um usuário ---").
//Para mostrar a pessoa que esta mechendo no programa pra que serve aquele comboBox.
dados.push ({label:"--- Selecione um usuário ---"});


//Função do {mdm} Zinc que seleciona todo o valor da tabela (teste).
//e é usada sempre antes de alguma tarefa no banco de dados.
mdm.Database.MySQL.runQuery ("SELECT * FROM " + "teste");
//a variavel (dataSet) contem todo o valor da tabela "teste" chamada logo acima.
var dataSet:Array = mdm.Database.MySQL.getData ();
//faz um loop for para preencher o array (dados)
for (i = 0; i < dataSet.length; i++)
{
//Repare que ele faz({label: "Valor"...)
// e ({, data:"Valor").
// isto quer dizer que LABEL é o que vai aparecer no comboBox.
// e DATA é o valor respectivo daquele LABEL.
dados.push ({label:mdm.Database.MySQL.getField (i, 1), data:mdm.Database.MySQL.getField (i, 0)});
}


//Insere os valores do array (dados) nos comboBox do palco.
comboDelete_cb.dataProvider = dados;
comboUpdate_cb.dataProvider = dados;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Esta função é relativamente simples
//O que ela faz é pegar o id ou seja o valor do nome selecionado
// e fazer uma busca pelo id no Banco de dados
function preencheCamposUpdate ()
{
var tabela:String = "teste";
mdm.Database.MySQL.runQuery ("SELECT * FROM " + tabela + " WHERE id =" + comboUpdate_cb.value);
//Como as variaveis criadas dentro de uma função so existem dentro dela mesmo.
//posso criar uma variavel com o nome (dataSet) sem alterar a variavel da função anterior.
// e (dataSet) irá conter agora somente os valores no banco de dados que corresponderem...
//...à minha consulta feita logo acima com os valores do (comboUpdate_cb).
var dataSet:Array = mdm.Database.MySQL.getData ();
//O loop for agora é usado para distribuir os valores ns campos de textos encontrados no palco
for (i = 0; i < dataSet.length; i++)
{
//Veja a consulta so vai pegar uma linha no Banco de dados...
//...ou seja, "dataSet[linha][coluna]":
_root.uNome_txt.text = dataSet[i][1];
_root.uSenha_txt.text = dataSet[i][2];
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//e finalmente a função que vai atualizar os valores no banco de dados
update_btn.onPress = function ()
{
//Novamente a QUERY, mas desta vez com o comando UPDATE
//veja o esquema, ("UPDATE (tabela) SET(seta "modifica") o campo("nome") de sua tabela pelo valor(uNome_txt.text, campo de texto encontrado no seu palco) e o campo("senha")...
//...de sua tabela pelo valor(uSenha_txt.text, campo de texto encontrado no seu palco) WHERE(condição) id(faz o UPDATE pelo id) que é encontrado no ComboBox...
var atualiza:Boolean = mdm.Database.MySQL.runQuery ("UPDATE teste SET nome='" + uNome_txt.text + "', senha = '" + uSenha_txt.text + "' WHERE id=" + comboUpdate_cb.value);
if (atualiza)
{
_root.uNome_txt.text = "";
_root.uSenha_txt.text = "";
mdm.Dialogs.prompt ("Atualizado");
}
};

Arquivos necessários para estudo:

Banco de dados e tabela

Database – AS2.fla