Criar BD Firebird pelo sistema
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.
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
Curtidas 0
Respostas
Fabiano Góes
16/08/2006
olá amigo,
tenho aqui uma rotina pra criar um banco de dados Firebird,
espero que possa ajuda-lo:
uma braço !!!!
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 !!!!
GOSTEI 0
Henriquedb
16/08/2006
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.
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.
GOSTEI 0
Delfai
16/08/2006
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;
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;
GOSTEI 0
Delfai
16/08/2006
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;
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;
GOSTEI 0
Delfai
16/08/2006
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
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
GOSTEI 0