quarta-feira, 23 de novembro de 2011

Conexão Delphi com banco de dados Mysql 5.1 - Delphi

Bom dia galera,
Hoje vou mostrar uma conexão do delphi com o banco de dados Mysql versão 5.1, mas que pode ser adaptado para a conexão em outras versões.
Primeiramente a conexão vai ser feita em um datamodule chamado dmConexao, onde contera um componente TSQLConnection e quantas TSQLQuery acharem necessárias, no meu caso, so coloquei uma query.
vamos la ...

Passos:
1 - Criar um datamodule com o nome dmConexao.
2 - Colocar um Componente de conexão ao banco do  tipo TSQLConnection e uma query do tipo TSQLQuery, ambos da aba DBExpress.
3 - Configurar o componente de conexão ao banco, conforme o print:
 
4 - Colocar os arquivos libmysql.dll,qtintf70.dll,dbxopenmysql50.dll na pasta corrente do projeto e caso for colocar o exe em outra pasta, copiar para la também.
5 - Criar uma procedure igual abaixo:
procedure TdmConexao.ConectaBanco();
var
   sIp,sBase,sUser,sPassword:string;
begin
   Try
      sIp       := 'localhost';
      sBase     := 'nome_banco';
      sUser     := 'nome_usuario_banco';
      sPassword := 'senha_usuario_banco';
      SQLConnection.Connected := False;
      SQLConnection.Params.Clear();
      SQLConnection.DriverName    := 'MySQL (Core Lab)';
      SQLConnection.GetDriverFunc := 'getSQLDriverMYSQL50';
      SQLConnection.LibraryName   := 'dbxopenmysql50.dll';
      SQLConnection.VendorLib     := 'libmysql.dll';
      SQLConnection.LoginPrompt   := False;
      SQLConnection.Params.Append('Database='+sBase);
      SQLConnection.Params.Append('User_Name='+sUser);
      SQLConnection.Params.Append('Password='+sPassword);
      SQLConnection.Params.Append('HostName='+sIp);
      SQLConnection.Connected := True;
      except
         On E:exception do begin
            Application.MessageBox(PChar('Não foi possivel conectar a base'+#13#10+
                                         E.Message),
                                         'Configurações de Conexão',MB_ICONERROR);
              Application.Terminate();
         end;
   end;
end;
6 - Chamar a procedure ConectaBanco no evento on Create do datamodule:
procedure TdmConexao.DataModuleCreate(Sender: TObject);
begin
   ConectaBanco();
end;

Observações :
  - Caso ocorra alguma mensagem de erro ao conectar, verifique:
      - Se as dlls estao na pasta de output do exe.
      - Se as variaveis sIp,sBase,sUser,sPassword estao com valores corretos.
##ATENÇÃO ##
O zip com os codigo fontes do datamodule e as dlls , seguem abaixo :

1 comentários:

Lucas t. disse...

Bom dia Gustavo!
Parabéns pelo artigo,
Quando voce tem uma procedure no mysql, que não retorna nada, (para truncar uma tabela por exemplo), voce chama a procedure, pela própria SqlQuery usando a instrução CALL?
Eu estou tentando e até executa so que da o erro de nenhum cursor retornado na query, gostaria de tratar esse erro
Abraços

Postar um comentário