Conexão com Banco de Dados usando AS2

22 09 2008

Conexão com Banco de Dados usando AS2.

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:

Database – AS2.fla


Ações

Information

8 responses

6 10 2008
Marco Romero

oi amigo gostaria de alguma ajuda na parte da conexão

Chama a função do {mdm} Zinc que busca e conecta ao seu banco de dados
//se conseguir conectar retorna (true) caso contrario (false).

no caso onde esta essa função ???

testei com os arquivos disponiveis para download e não funcionou….

PS: estou rodando localmente servidor apache com php4 e mysql configurados e rodando normalmente !!!

7 10 2008
jefersonvargas

Olá Marco Romero, desculpa a demora…
A função que você procura está instanciada numa variavel veja:

var estaConectado:Boolean = mdm.Database.MySQL.connect ("localhost", "3306", true, "root", "", "dbZinc");

Ou seja, a função mdm.Database.MySQL.connect(), retorna um valor boleano, é só esta linha mesmo, e ela precisa ser chamada sempre quando ouver necessidade de se conectar ao seu banco de dados.
Espero ter ajudado…
Obs: Ta umpouco bagunçado por aqui, mas é só por enquanto.
Abraços…

30 11 2008
Sidney Reis

Cara muito bom, mas eu gostaria de um passo a passo simplizinho de flash-MDM-access tipo assim tenho uma unica tabela no Access chamada Cliente com dois atributos (colunas) CDCLIENTE E NMCLIENTE CONSTRUI UM FLASH COM UM BOTÇÃO ENVIAR E DOIS INPUT TEXT GOSTARIA DE PREENXER OS DOIS E AO APERTAR O BOTÃO ele enviar para o access. cara será que tem como sair um passo a passo principalmente do MDM? eEstou louco para iniciar a Utilização… se alguem quiser me dar uma dica meu mail é sidneyreisgomes@gmail.com

2 12 2008
ulisses

Olá, interessante a abordagem porém estou com uma dúvida: Para vários acessos ao banco você usa o mdm. O que seria isso? Como crio ele?

2 12 2008
jefersonvargas

Ola Ulisses, o {mdm} Zinc é um Software que transforma e amplia as capacidades do flash, tornando-o em um programa.
E quando uso um comando na janela de actions do flash;
Exemplo:
mdm.Dialogs.prompt(“Mostra uma janela”);

Depois de criado o SWF do seu programa com o comando “mdm…”

Você usa o {MDM} ZINC para adcionar a capacidade no flash, para que ele consiga mostrar uma nova janela do windows com a mensagem “Mostra uma janela”.

O mesmo acontece com os softwares que precisam se conectar ao banco de
dados, você usa os comandos “mdm.Database…”.

Espero que tenha ficado claro…

Abraços

4 01 2009
Flavio

Cara se eu usar o Zinc , e alguem baixar meu SWF… meu codigo fonte fica disponivel … meu acesso a BANCO , SENHA ficam expostos ? nao tem como proteger?

4 01 2009
jefersonvargas

Olá Flavio, se você usar o {mdm} Zinc, a versão final de seu aplicativo será no formato “.exe”, sera um programa para windows e a unica forma de alguem te acesso ao seu “.swf” é se você fornecer, ou se alguem tiver acesso ao seu computador!!

17 02 2010
TIAGO

eu testei o tuto e ta dando o seguinte erro:

TypeError: Error #1034: Falha de coerção de tipo: não é possível converter “” em mdm_resolver.
at mdm::Database$/get MySQL()
at TESTEMDMAS3_fla::MainTimeline/conMySQL()

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: