Falando sobre MySQL no HMG

Nas mensagens que recebo, sempre existem dúvidas sobre o MySQL, e sempre muito próximas a um comentário feito por um colega em uma postagem antiga, vou tentar falar um pouco sobre o MySQL com a HMG, porém acredito que o problema é de conceito, é mesmo de uso e simplesmente isso, sendo assim, vamos bater papo sobre MySQL e sobre como usar MySQL com HMG, é claro que em uma única postagem é impossível e muito difícil de falarmos tudo, mas vamos fazer, neste post, vamos falar utilizando como guia o comentário do colega.

Não importa se nosso cliente terá 1, 2, 3,…, ou n máquinas utilizando nosso sistema, o que nós precisamos saber é que uma das máquinas será o SERVIDOR, seja ele dedicado ou não, tanto faz (o porte do cliente e a quantidade de processamento vai determinar isso, particularmente eu gosto de máquinas dedicadas para serem servidoras), nele nós iremos instalar o SGDB MySQL, existem várias maneiras de fazer-mos isso, a mais simples e rápida é através de um pacote chamado WampServer (similares), com ele nós instalamos o servidor HTTP Apache, o interpretador PHP, e o Banco de Dados MySQL com apenas alguns cliques e sem configurar quase nada, pois ele já vem pronto.

Podemos pensar “e seu quiser instalar na ‘mão’, na ‘unha’, não quero um pacote pronto” então baixemos o instalador do MySQL diretamente no site do fabricante e vamos instalar, é muito simples fazer isso também, atualmente os instaladores estão bem simples de preparar o ambiente para uso.

Existe um pequeno detalhe no MySQL que o mesmo vem para funcionar apenas na máquina SERVER o famoso “localhost”, e se você for em outra máquina, e tentar conectar informando o TCP/IP, isso não irá acontecer, teremos uma falha, pois por segurança o MySQL vem “invisível” para a rede, mas é uma configuração simples de ser mudada, depois coloco para vocês como deverá ser feito. Uma única vez e pronto toda a sua rede poderá acessar seu SGDB.

Nas demais máquinas do nosso cliente, precisamos ter apenas o arquivo executável do nosso programa “<programa>.exe” e também um arquivo DLL chamado “libmySQL.dll”, este é responsável por fazer as conexões com a base de dados.

Então pensamos novamente “e se eu não quiser ter este programa em cada máquina do meu cliente, posso configurar uma pasta com os arquivos e compartilhar pela rede?”, a resposta é simples, “SIM PODEMOS”, basta criar uma pasta no servidor e compartilhar com todos da rede, nesta pasta colocaremos nosso executável e também a DLL do MySQL, logo em seguida nas máquinas da rede criamos atalho para o programa.

Quanto a conexão ao Banco de Dados, sempre temos algumas dúvidas, então vamos tentar entender abaixo:

A Conexão com o Banco de Dados, podemos pensar em uma ligação feita entre a aplicação e o banco de dados, com esta conexão podemos enviar instruções e receber o retorno delas, é através desta conexão que recebemos e enviamos os dados até o banco de dados.

Quando falamos em fechar a Conexão com o Banco de Dados, não quer dizer que teremos que desligar a aplicação, na verdade essa desconexão é apenas a exclusão da ligação entre os dois, em aplicações modernas você não fica 100% conectado, elas apenas conectam para puxar a informação e desconectam, na realidade para o usuário isso fica invísivel, apenas no programa é feito isso, como? veja abaixo:

  1. conectamos o banco de dados;
  2. enviamos instruções;
  3. recebemos resultados;
  4. mostramos ao usuário;
  5. fechamos a conexão.

E e se nós não quisermos trabalhar assim e quisermos trabalhar de outra maneira, (como muitos fazem com DBFs) por exemplo como abaixo descrito:

  1. entro no sistema e conecto o banco de dados;
  2. fico o dia todo conectado e fazendo tudo o que preciso;
  3. não quero desconectar, continuo conectado mesmo quando ninguém faz nada no sistema;
  4. vou trabalhando sem fechar a conexão;
  5.  fecho a conexão quando fecho o sistema.

Podemos fazer isso sem problemas não tem nada demais, apenas digo que a maioria não trabalha assim, pois imagine uma oscilação na nossa rede, com isso a ligação com o banco de dados será afetada, agora tudo volta ao normal, porém a nossa conexão é aquela que foi aberta antes da oscilação (queda), ela pode estar danificada (estará) e nós não teremos mais sucesso na execução das rotinas, pois falta a ligação com o banco de dados, e nosso programa irá causar erro de execução.

Afinal o que é está ligação? Veja bem, esta ligação ou conexão, fisicamente é uma variável que vai armazenar o endereço, o posicionamento do banco de dados é como se fosse um ponteiro que aponta para o banco, se ele foi danificado o que vai acontecer? Nada! O ponteiro será inútil.

A ligação, conexão é apenas uma variável com um ponteiro, endereço dos nossos dados na rede.

Para garantir a qualidade é ideal que nós criemos uma função que conecta no banco de dados e toda vez que for buscar ou modificar alguma informação na base de dados, nós executamos a função de conexão ela atualiza o ponteiro (ligação) e depois executamos nossa rotina, acreditem em mim não teremos nenhum problema fazendo isso, e também não vai nos dar o trabalho que imaginamos. É simples, muito simples mesmo!

O nosso colega em uma de nossas postagens anteriores, comentou sobre o uso de senhas para usuários para acessar determinados módulos do sistema, fique tranquilo, não é preciso mudar nada nesta estrutura, particularmente também uso estas senhas, em qualquer liguagem que utilizo.

Ele termina o comentário perguntando sobre se o servidor der pau na hora e se o usuário precisa conectar no banco de dados, veja bem, se o servidor der pau, precisamos corrigir isso, pois uma aplicação não roda com o servidor quebrado, mesmo para o caso do DBF, se a máquina onde os arquivos compartilhados estiverem quebrar, nós também não conseguiremos utilizar o sistema, enfim, servidor tem que estar sempre rodando o MySQL senão não tem como usar.

Quanto ao usuário conectar ao banco de dados, não é assim que funciona, quem conecta ao banco de dados é o programa executável (nós programadores faremos isso no nosso código), dentro dele teremos as rotinas para fazer isso, o usuário continua apenas utilizando o que ele utiliza hoje, e o sistema continua em execução, porém sua ligação com o banco de dados fica parada até que precisemos realmente trocar informações com a base de dados. O usuário nem vai imaginar que o servidor SGDB MySQL esteja ou não conectado com a aplicação.

Realmente acessar DBF é muito simples e fácil, não dúvido de vocês, mas e se acontecer um “acidente” e o usuário ir até a pasta compartilhada com os arquivos e deletar um arquivo, ou todos, pois para acessarmos esta pasta tem que ser compartilhada e com todos os privilégios, isso não é adequado para ambiente corporativo, já com o MySQL, nós não vamos compartilhar arquivos fisicos dos dados, pois quem acessa eles é apenas o SGDB, quanto a ser simples, depois de alguns dias utilizando com certeza vamos achar simples o uso do MySQL.

Para termos uma visão completa do MySQL é preciso perdemos o “medo”, e passar a viver com ele assim como vivemos com arquivos DBF, lembre-se DBF por melhor que seja, por mais que possamos gostar, não é um SGDB, são apenas tabelas de registros e querendo ou não, um dia vamos precisar acessar base de dados remotas em servidores, principalmente com o conceito de computação nas nuvens.

E existem vantagens nisso, estes dias precisei disponibilizar uma aplicação que usava a tecnologia de SGDB MySQL, porém o cliente queria utilizar em apenas uma máquina, e não quis instalar o MySQL, simples troquei a conexão, ao invés de MySQL, mudei para o SQLite, que funciona sem instalação em módulo monousuário, e pronto não mudei mais nada, pois a linguagem SQL é universal para quase todos os SGDBs SQL disponíveis, isso é muito bom em termos de produção.

Um excelente programa para acessar o MySQL e gerenciá-lo é o HeidiSQL, um super programa freeware, na Internet temos bastante material sobre ele, o HeidiSQL seria o nosso bom e útil DBU, um pouco mais cheio de ferramentas, lógico.

Então ficamos assim:

Em uma máquina instalamos o MySQL (servidor);

Criamos uma pasta, compartilhamos e dentro colocamos o nosso programa executável e a DLL do MySQL;

Nas demais máquinas apenas criamos o atalho para o programa executável;

Espero que esta seja a primeira de muitas conversas sobre MySQL com HMG, na próxima vou postar um micro programa, daqueles que você poderá compilar e ver a conexão com MySQL acontecer de forma simples.

Até a próxima, e bem vindos à todos novamente.

11 comentários em “Falando sobre MySQL no HMG

Adicione o seu

  1. saudade desse velho amigo que tentou me fazer criar algo em sql..rsrs! mas como já sou velho demais para entender e fazer funcionar só posso exaltar o esforço dele mesmo.

  2. Um grande problema que vejo no HMG com MySQL é a falta de documentação, o máximo que consegui foi a TMySQLServer.htm que mostra alguns métodos porem se você precisa saber e usar mais o objeto Query/método :Query(cQuery) não há uma linha a respeito, apenas conhecemos alguns métodos básicos como :Destroy(). :LastRec(), :Skip(), :GetRow(), etc em alguns exemplos e só. Se algum amigo aqui tiver documentos a esse respeito por favor me avise e que vou disponibilizar a outros em forum. Obrigado.

  3. Amigos, a libmySQL.dll não roda no Windows 8 64 bits. Alguém teria a solução para isso ? Uso Minigui Extended com Harbour e Wamp para a instalação do Apache+PHP+Mysql. Até o windows XP 32 bits tudo era uma maravilha.

  4. Desculpem a ignorancia de um noviço: onde encontro um tutorial ou um guia de referência de como integrar HMG com MySql? Grato.

    1. Ola Geraldo, que ignorancia que nada! Essa eh uma duvida de muitos, quando comecei a mexer com o MySQL tive a mesma duvida, e como ja havia dito ao Marcos, estou preparando um tutorial com exemplos funcionais de como fazer a integracao com MySQL , um cadastro, incluir, alterar e excluir, assim como consultas. Acredito que em mais alguns dias vou publicar aqui o documento.

      1. Legal! Vou aguardar… Grato pelos tutoriais,que voce disponibiliza. Aprendi bastante.

  5. Marcos, você tem completa razão sobre HMG Extended, poderíamos ter uma ferramenta incrível, mas infelizmente não rola mesmo, esses dias queria algo com Window MDI, mas quem consegue fazer um programa estável e com chances de manutenção utilizando HMGExt, eu não consigo!

  6. Esclarecedor! Obrigado Sr. Daniel, dúvidas com certeza ainda terão, e com sua habitual paciência, estaremos projetando em breve sistemas mais confiáveis e com mais agilidade, pois, presteza e qualidade já possuimos com a HMG!
    Quanto ao SQl em sí, não se ofenda ok, mas imagine você falando Aramês (eu falo, nasci lá, mas sou sulbrasileiro com orgulho), aliás, é claro que você aramês, bobeira minha,….todo mundo fala aramês…kopkikkopk(é risada em aramês)
    Um grande abraço e bom que esteja de volta sentimos sua falta nesta que é uma aventura e tanto de sair do PHP, Phyton, e tantas outras com nomes nem pronunciáveis e se deparar com a HMG (embora limitada, uma pena , eu lamento pela HMGExtended que realmente instiga mas não “rola”, dá pau toda hora).
    Cuide-se e tenha uma vida longa e próspera

    1. Não me ofendo, aliás, poderia explicar em japonês.
      Posta zembo ni nihongo de kakeba doo.
      Sorede SQL cantan da!

      Mas infelizmente ai poucos entenderiam, acredito perfeitamente que o Sr. é a pessoa mais indicada para dizer a todos que “falar” dois idiomas é perfeitamente possível e fácil, na medida que se queira fazer isso.
      Ficarei satisfeito ao ver o Sr. em breve produzindo código com SQL.
      A você também, vida longa, e quero te ver no MySQL em breve.

Deixe um comentário

Acima ↑