Fórum Criar um banco via Delphi #346172
18/09/2007
0
Estou usando Delphi 2006 + Firebird 2
Jhosef
Curtir tópico
+ 0Posts
18/09/2007
Jhosef
Gostei + 0
18/09/2007
Fabiano Góes
procedure CreateDataBase(const ADataBase: String); var DataBase : TIBDatabase; begin DataBase := TIBDatabase.Create( nil ); try try with DataBase do begin DatabaseName := ADataSource; SQLDialect := 3; Params.Clear; Params.Add(´USER ´´SYSDBA´´´); Params.Add(´PASSWORD ´´masterkey´´´); Params.Add(´PAGE_SIZE 16384´); Params.Add(´DEFAULT CHARACTER SET ISO8859_1´); CreateDatabase; end; // WITH CriaBanco DO finally FreeAndNil(DataBase); end; except raise Exception.Create(´ERROR: CreateDataBase´); end; end;
após criar o DataBase, você abre uma conexão com o mesmo através do TSQLConnection, e com um TSQLQuery você cria as tabelas tipo:
procedure CreateTable(ACon: TSQLConnection; AScriptSQL: string); var QRY: TSQLQuery; begin QRY := TSQLQuery.Create(nil); try ACon.Open; QRY.SQLConnection := ACon; with QRY do begin Close; SQL.Clear; SQL.Text := AScriptSQL; ExecSQL(); end; finally ACon.Close; FreeAndNil(QRY); end;
ai um metodo para verificar se a tabela já existe antes de cria-la:
function TableExist(ACon: TSQLConnection; ATableName: string): Boolean; var List: TStrings; i : integer; begin Result := False; List := TStringList.Create; try ACon.Open; ACon.GetTableNames(List); for i := 0 to List.Count - 1 do begin if UpperCase(List.Strings[i]) = UpperCase(ATableName) then Result := True; end; finally List.Free; ACon.Close; end; end;
então você pode usar assim:
begin if not FileExists(´C:\teste.fdb´) then CreateDataBase(´C:\teste.fdb´); // aqui você configura o objeto TSQLConnection para se conectar com o DataBase: ´C:\teste.fdb´ if not TableExist(´TableName´) then CreateTable(SQLConnection, SeuScriptSQL); end;
Abraço !!!
Gostei + 0
18/09/2007
Jhosef
Outra coisa...
Se eu quiser fazer isso para outros bancos como MySQL, SQL Server, Access que são bancos que o DBExpress suporta???
Gostei + 0
18/09/2007
Jhosef
Gostei + 0
18/09/2007
Fabiano Góes
o metodo [b:d220c43b95]CreateDataBase[/b:d220c43b95] cria Banco apenas Interbase/Firebird
eu ainda não consegui uma maneira generica para criar varios tipos de Banco de dados
para o MYSQL você pode abrir uma conexão com o Banco ´mysql´ que é criado na instalação, ai com uma query você executa a criação tipo:
query.close; query.SQL.Text := ´create database ´ + DataBase; query.ExecSQL();
Sim como você passa um parametro com o ScriptSql você pode usar para executar qualquer script no banco, mude o nome no metodo para ExecSQL e use para executar seus scripts.
Gostei + 0
18/09/2007
Jhosef
As outras funções podem ser utilizadas com outros bancos entaum... dai posso soh enviar um banco vazio e manipulo do jeito q for melhor...
Vlw pelas dicas, consegui no almoço executa-las no firebird...
huauuhahua
Vlw
Gostei + 0
18/09/2007
Fabiano Góes
valeu por ter voltado para dizer que funcionou assim o post não fica em aberto e servirá quando outro amigo tiver duvida.
abraço !!!
Gostei + 0
19/11/2007
Renan.cb
criei uma dll para fazer a criação do banco para mim, e chamo ela pelo meu instalador (Inno Setup). Fiz isso para diminuir o tamanho do meu instalador.
sera que nao tem uma maneira de usar as dll do firebird para fazer essas criações e alterações em tabelas?
abraço
Gostei + 0
19/11/2007
Renan.cb
pelo sql manager, temos a opção de abrir um script sql e executá-lo com sucesso. Teria com fazer isso de dentro de uma procedure ou funçao?
grato pela ajuda
Gostei + 0
22/11/2007
Renan.cb
alguma dica?
Gostei + 0
13/03/2008
Pqno_icarus
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)