Autor Tópico: Conexão com base externa utilizando MySQL  (Lida 6866 vezes)

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Conexão com base externa utilizando MySQL
« Online: Dezembro 10, 2008, 04:03:06 pm »
Olá amigos!

Tenho mais uma dúvida.
Gostaria de saber, como faço para o meu programa acessar uma base de dados que não fica local. Por exemplo, uma base em MySQL que fica em um servidor qualquer. Como passo para a minha aplicação, onde fica a base de dados com que ela deve se conectar. Qual o código a ser inserido?

Gostaria de fazer algo, como por exemplo, criar uma janela de config, onde o usuário informe a localização da base, e feito isso, cada vez que a aplicação for executada, essa informação seja lida. Desta maneira, posso ter uma base de dados centralizada em qualquer servidor, sendo acessada pelas minhas estações. Lembrando que estou usando o acesso nativo MySQL.

Grato pela atenção de todos!
Alex.

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Re: Conexão com base externa utilizando MySQL
« Responder #1 Online: Dezembro 10, 2008, 06:09:14 pm »
Pois então....

também estou precisando de um exemplo para fazer isso.

O Junior ficou de postar um exemplo de como acessar e configurar a base mysql.


ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re: Conexão com base externa utilizando MySQL
« Responder #2 Online: Dezembro 15, 2008, 01:42:46 pm »
É Davi...

Parece que este tópico vai ficar sem resposta.
Será que alguém poderia postar um exemplo de configuração em servidor e estação através do HyperFile mesmo? De repente, podemos tentar adaptar e fazer funcionar utilizando o MySQL.

Att,

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re: Conexão com base externa utilizando MySQL
« Responder #3 Online: Dezembro 16, 2008, 04:42:58 pm »
Amigos,

O que eu consegui descobrir depois de vários testes é o seguinte:
No Initialization do Project Code, colocar o seguinte código:

Banco is Connection
   // Connection Settings
   Banco..Provider = hNativeAccessMySQL
   Banco..User = "usuario"
   Banco..Password = "senha"
   Banco..Server = "servidor:porta"
   Banco..Database = "nome do banco"
   Banco..Access = hOReadWrite
   // Opening the connection
   HOpenConnection(Banco)

Agora os probleminhas com esses procedimentos! hehehe
Achei lento para conectar, e se vc tiver relatórios no programa, por exemplo, gera normal, mas quando você fecha o preview e volta para o programa, o mesmo fica travado por um tempo, como se tivesse reconectando novamente.

Gostaria de sugestões para melhorar este código e otimizar a conexão via MySQL.

Att,
Alex.

juniorschroder

  • Full Member
  • ***
  • Mensagens: 103
  • Karma: +0/-0
Re: Conexão com base externa utilizando MySQL
« Responder #4 Online: Dezembro 17, 2008, 09:19:05 am »
Gurizada, fiquei de criar o exemplo de configuração de conexão com a base de dados mas ainda não deu tempo... to muito corrido ultimamente....

Mas é o seguinte, uma conexão do windev com o banco, é criada e armazenada automaticamente na Analysis, e é esta que vamos configurar.

Os parametros de configuração de acesso ao banco são os parametros necessários da analysis, estes devem ser alterados pelo sistema em "tempo de execução", pra fazer isso utilizamos a função HDescribleConection() - Vejam no help do WD os parametros necessários para essa função. Os dados para estes parametros devem ser armazenados em algum lugar, geralmente eu crio um .INI ex.:

[CONFIG_DB]
usuario=root
senha=123
nome_banco=CRM
... e assim vai, cada parametro necessário na função HDescribleConection() tem uma keyword aqui no meu INI.

Então na inicialização do projeto eu leio as informações do INI e uso a função HDescribleConection() pra alterar os dados de conexão ao banco, ex:

SENHABANCO, provider, USUARIOBANCO, ODBCBANCO are strings
SENHABANCO = Uncrypt(INIRead("DATABASE", "PASSWD", "", fExeDir()+"\Config.ini"),"SENHA_CRIPTOGRAFIA")
provider = INIRead("DATABASE", "PROVIDER", "", fExeDir()+"\Config.ini")
USUARIOBANCO = INIRead("DATABASE", "USER", "", fExeDir()+"\Config.ini")
ODBCBANCO = INIRead("DATABASE", "DSN", "", fExeDir()+"\Config.ini")
HDescribeConnection("MyConnection", USUARIOBANCO, SENHABANCO, ODBCBANCO, SERVERNAME, hODBC, hOReadWrite,CONNSTRING)

O exemplo acima eu tenho os parametros necessários para conexão via ODBC, na hora de ler a senha uso a função UnCrypt porque por questões de segurança eu deixo a senha no INI criptografada.
Para configurar os parametros de configuração, geralmente crio uma tela pra fazer isso, esta tela eu coloco um teste tambem na inicialização do projeto, ANTES da conexão com o banco. O teste é para verificar argumentos do executável, por exemplo:
IF (CommandLine() = "/config") THEN
     Open(WIN_ConfigDB)
END

desta forma, se o executável for chamado com o argumento /config  (c:\sistema\sistema.exe /config) será aberta a tela de configuração de acesso ao banco de dados.

O ideal é colocar todos os parametros necessários da função  HDescribleConection() no INI, e preenchemos sempre os que forem necessários deixando os outros em branco.

Acho que nessa minha enrolação aqui dá pra saca mais ou menos né.... bom assim que tiver um tempo preparo umas video aulas para demonstrar isso igual.


Da forma que o Alex colocou, criando um objeto Connection tmb funciona, dessa forma após o HOpenConnection() é interessante alterar a conexão das tabelas da Analysis, pra isso colocamos a função HChangeConnection("*",Banco).




Arlindo Reis

  • Sr. Member
  • ****
  • Mensagens: 291
  • Karma: +0/-0
Re:Conexão com base externa utilizando MySQL
« Responder #5 Online: Outubro 16, 2013, 10:43:19 am »
Olá pessoal,

desculpem estar reavivando este tópico, mas, achei desnecessário criar um novo...

Alguém tem alguma rotina de para gerar um config que possa ser lido pela plataforma que criamos? Exemplo: um wp-config do wordpress!

É a instalação do site ou sistema em poucos minutos.

No VS2012 o pessoal trabalha legal com config.xml, gerado pelo próprio projeto.

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Re:Conexão com base externa utilizando MySQL
« Responder #6 Online: Outubro 21, 2013, 08:17:50 am »
Eu crio o instalador do sistema pelo inno setup

ao executar o sistema pela primeira vez ele abre o  assistente de conexão com o banco.

http://img843.imageshack.us/img843/9527/zyls.jpg

Depois eu salvo as informações no registro do windows

Arlindo Reis

  • Sr. Member
  • ****
  • Mensagens: 291
  • Karma: +0/-0
Re:Conexão com base externa utilizando MySQL
« Responder #7 Online: Outubro 21, 2013, 12:27:03 pm »
Bom dia,

Eu crio o instalador do sistema pelo inno setup

ao executar o sistema pela primeira vez ele abre o  assistente de conexão com o banco.

http://img843.imageshack.us/img843/9527/zyls.jpg

Depois eu salvo as informações no registro do windows

No caso só serviria para Windev :(

Sergio

  • Newbie
  • *
  • Mensagens: 43
  • Karma: +0/-0
Re:Conexão com base externa utilizando MySQL
« Responder #8 Online: Outubro 22, 2013, 06:20:56 pm »
Para que usa hyperfile Server / Clasic como groupWare

Se vc usa o hyperfile a PC SOFT já inventou a roda, se usa outro banco, não sei se irará funcionar

Configure o groupWare como hyperfile Server

Excute create setup porcedure...
próximo...

Quando chegar em setup mode.
selecione idividual setup.
próximo..
quando chegar em parameters of the database
seleciona:
configure the sybchonizatio of ...
configure the location of the data files
customize the location of the groupware files durig setup
próximo..
quando chegar em configuring the data conectinos
Clica em parameter
Vai abrir uma janela
Seleciona
The values entered during the setup(specify the default values)
deixa tudo em branco
da ok

próximo..

fim

quando vc for instalar o sistema
ele vai pedir o ip do servidor
usuário e senha do hyperfile
depois ele vai pedir o local do groupware que vai está armazenado no servidor.
ip do servidor
usuário e senha do hyperfile

somente isso.

Testei aqui e funcionou redondo
sem lentidão.

Na pasta do programa ele cria um arquivo que tem o ip e os parâmetros do sistema

O negócio é tão bom que vc pode escolher se deseja criptografar os dados do sistema na rede

Sem mais
Sergio