Conectar banco de dados via codigo

Delphi

05/05/2011

Olá,   Utilizo o componente DBexpress para fazer minha conexões com banco de dados, estou criando um pequeno software que abrirá banco de dados interbase como de firebird mas estou com problemas para fazer a conexão do mesmo via codigo.   function TipoBanco(tip:integer):integer;
begin
   case tip of
      0 : begin
          wconnection := 'FBConnection';
          wdriver := 'Firebird';
          wgetdriver := 'getSQLDriverINTERBASE';
          wlibrary := 'dbxfb.dll';
          wvendorlib := 'fbclient.dll';
          end;
      1 : begin
          wconnection := 'IBConnection';
          wdriver := 'Interbase';
          wgetdriver := 'getSQLDriverINTERBASE';
          wlibrary := 'dbxint.dll';
          wvendorlib := 'gds32.dll';
          end;
      end; end;
A função acima estabelce qual a base de dado será conectada.   procedure conexao;
begin
  DM := TDM.Create(application);
  With DM do
     begin
     conexao.ConnectionName := wconnection;
     conexao.DriverName := wdriver;
     conexao.GetDriverFunc := wgetdriver;
     conexao.LibraryName := wlibrary;
     conexao.LoginPrompt := false;
     conexao.Params.Add('DataBase=nomedb');
     conexao.VendorLib := wvendorlib;
     try
       conexao.Open;
     except
         begin
           ShowMessage('Não foi possível efetuar a conexão.');
           wresult := false;
         end;
      end;
  end;
end;   A procedure por sua vez realiza a conexão com o banco escolhido, nomedb é uma variavel do tipo string que recebe o comando onde esta armazenado o banco de dados. Ex: nomedb := 'G:\BacalaEditorSQL\BDteste.fdb', no caso essa linha de comando esta em um compontente edit. nomedb := txtlinhadecodigo.txt.   Toda vez que tento testar, ele mostra a mensagem 'Não foi possível efetuar a conexão.'   Alguem poderia me ajudar?   Obrigado.
Wilton Júnior

Wilton Júnior

Curtidas 0

Respostas

Rodrigo Mattos

Rodrigo Mattos

05/05/2011

amigo você ja debugou, para ver aonde que o código sai, e vai para a mensagem?
GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Já debuguei linha por linha, e não sei o pq que ele não conecta.   Por acaso vc tem um modelo de como reliza essa conexao usando parametro?
GOSTEI 0
Jackson Veiga

Jackson Veiga

05/05/2011

Tente fechar a conexão com o banco antes de informar os dados e conectar, não sei se é  Close, mas acredito que seja!
Tente como no codigo abaixo:


procedure conexao;
begin
  DM := TDM.Create(application);
  With DM do
     begin

     conexão.Close; //não tenho certeza se é close, mas é algo parecido, o objetivo é fechar a conexão

                          //antes de reconectar.
     conexao.ConnectionName := wconnection;
     conexao.DriverName := wdriver;
     conexao.GetDriverFunc := wgetdriver;
     conexao.LibraryName := wlibrary;
     conexao.LoginPrompt := false;
     conexao.Params.Add('DataBase=nomedb');
     conexao.VendorLib := wvendorlib;
     try
       conexao.Open;
     except
         begin
           ShowMessage('Não foi possível efetuar a conexão.');
           wresult := false;
         end;
      end;
  end;
end;


GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Senhor Rodrigo Francisco de Mattos respondendo a sua questão, debuguei novamente e deu o seguinte erro ao tentar realizar a conexao com o banco de dados e quando clico no botão para abrir um base de dados (opendialog) . Project SQLBacala.exe raised exception class EExternall Exception with message 'External exception C0000235'.   Senhor Jackson Eduardo da Veiga obrigado por sua dica vou tentar fazer isso. Muito obrigado
GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Senhor Jackson Eduardo da Veiga A sua sugestão foi boa mas ainda não esta funcionando. Preciso saber o que é o erro Project SQLBacala.exe raised exception class EExternall Exception with message 'External exception C0000235'. acontece tanto quando eu clico no speedbutton para buscar um arquivo e ou quando peço para esse arquivo ser aberto atraves do codigo que passei. obrigado
GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Achei esse link https://www.devmedia.com.br/rte3/add_forum.asp?mode=reply&;sala=77&top=400382   Talves seja o meu avira que esta dando problema no meu executavel e banco não esta logando, caso for isso eu volto para confirmar se deu ou não certo   obrigado
GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Achei esse link https://www.devmedia.com.br/rte3/add_forum.asp?mode=reply&;sala=77&top=400382   Talves seja o meu avira que esta dando problema no meu executavel e banco não esta logando, caso for isso eu volto para confirmar se deu ou não certo   obrigado
GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Achei esse link https://www.devmedia.com.br/rte3/add_forum.asp?mode=reply&;sala=77&top=400382   Talves seja o meu avira que esta dando problema no meu executavel e banco não esta logando, caso for isso eu volto para confirmar se deu ou não certo   obrigado
GOSTEI 0
Rafael Mattos

Rafael Mattos

05/05/2011

na hora de seta o nome do banco tenta assim


Conexao.Params.Values['Database'] := 'Local do Seu Banco';

GOSTEI 0
Wilton Júnior

Wilton Júnior

05/05/2011

Valeu companheiro agora ta funcionando. muito obrigado mesmo e Deus te abençoe.
GOSTEI 0
POSTAR