Fórum Criar BD Firebird pelo sistema #327568

16/08/2006

0

Ola,

gostaria de saber como criar um Banco de Dados Firebird atraves da minha aplicacao.
Nao quero por junto no Install Shield pois nao quero que o Install Shield apague o BD quando o sistema for desinstalado (por segurança).
Ja me disseram que eu preciso conectar ao security.fdb e depois rodar o script de criação do meu banco. Mas tem um problema: Como faço pra saber o caminho do security.fdb? pois pode estar no c:, d:, arquivos de programas, program files, etc.

Valeusgs.


Henriquedb

Henriquedb

Responder

Posts

17/08/2006

Fabiano Góes

olá amigo,
tenho aqui uma rotina pra criar um banco de dados Firebird,
espero que possa ajuda-lo:

procedure CreateDataBase(DataSource : String);
var DataBase : TIBDatabase;
begin
  DataBase :=  TIBDatabase.Create( nil );
  try
    try
      with DataBase do
        begin
          DatabaseName := DataSource;
          SQLDialect   := 3;
          Params.Clear;
          Params.Add(´USER ´´SYSDBA´´´);
          Params.Add(´PASSWORD ´´masterkey´´´);
          Params.Add(´PAGE_SIZE 4096´);
          Params.Add(´DEFAULT CHARACTER SET ISO8859_1´);
          CreateDatabase;
        end; // withDataBase do
    finally
      FreeAndNil( DataBase );
    end;
  except
    on E: Exception do
        Application.MessageBox( pChar( E.Message ), ´Create DataBase´,  MB_OK+MB_ICONERROR);
  end; // try
end; // procedure CreateDataBase(const DataBaseName: String);



uma braço !!!!


Responder

Gostei + 0

17/08/2006

Henriquedb

Valeu Fabiano,

mas eu ainda preciso saber o caminho do security.fdb pois a sua funcao tambem ira precisar estar conectada a um BD para poder criar outro BD. Este que é o problema.
Em resumo, só preciso pegar o caminho de instalação do FB no registro do sistema. Depois fica facil, é só conectar a ele e rodar o script de criação do BD que eu quero.

Te mais.


Responder

Gostei + 0

18/08/2006

Delfai

Olá, testei a função do colega acima e deu certo, uso Delphi 7 e Fibebird 1.5. Tente usar esta abaixo, coloque um componente IBDatabase, não precisa mudar nada, coloque um button e no evento do botão:

procedure TForm1.Button1Click(Sender: TObject);
begin

with IBDatabase1 do
begin
SQLDialect := 3;
DatabaseName := ´Localhost:C:\DADOS.FDB´;
Params.Clear;
Params.Add(´USER ´´SYSDBA´´´);
Params.Add(´PASSWORD ´´masterkey´´´);
Params.Add(´PAGE_SIZE 4096´);
Params.Add(´DEFAULT CHARACTER SET ISO8859_1´);
try
CreateDatabase;
except
ShowMessage(´Deu porco !´);
end;
end;

end;


Responder

Gostei + 0

18/08/2006

Delfai

Se você quiser criar as tabelas, coloque um IBQuery e um IBTransaction, não precisa configurar nada pos configurei em tempo de execução, coloquei um novo button e no evento:

procedure TForm1.Button2Click(Sender: TObject);
begin

IBTransaction1.DefaultDatabase:= IBDatabase1;
IBQuery1.Database:= IBDatabase1;
IBQuery1.Transaction:= IBTransaction1;

with IBQuery1 do
begin
SQL.Clear;
SQL.Add(´CREATE TABLE DINHEIRO (LANCAMENTO CHAR(10) NOT NULL,OBSERVACAO VARCHAR(20),DATA DATE);´);
try
ExecSQL;
except
ShowMessage(´Deu porco !´);
end;
end;

end;


Responder

Gostei + 0

18/08/2006

Delfai

Faltou criar um índice, coloquei um button e no evento:

procedure TForm1.Button3Click(Sender: TObject);
begin

with IBQuery1 do
begin
SQL.Clear;
SQL.Add(´ALTER TABLE DINHEIRO ADD CONSTRAINT PK_LANCAMENTOS PRIMARY KEY (LANCAMENTO);´);
try
ExecSQL;
except
ShowMessage(´Deu porco !´);
end;
end;

end;

Testei as tres dicas e aqui funcionou(Delphi 7 + Firebird 1.5), coloquei cada coisa em um Button, assim fica mais fácil para os outros usuários entenderem, poderia colocar em um evento OnShow por exemplo, mas antes era bor ver se o DB e/ou Tabelas existem mas, para isso, teria que tentar se conectar a ele e não simplesmente ver se o arquivo existe.

Espero ter ajudado, sou iniciante e conhecí o Firebird a apenas duas semanas através da Internet, basicamene só sei fazer isso por enquanto, estou usando o DB Access mas queria trabalhar com o FB; o pouco que aprendo, tento colocar no fórum para ajudar outros como eu.

Valeu !

:D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar