Conectar banco de dados via codigo
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.
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
Curtidas 0
Respostas
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
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
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:
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
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
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
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
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
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
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
05/05/2011
Valeu companheiro agora ta funcionando.
muito obrigado mesmo e Deus te abençoe.
GOSTEI 0