Criar um banco via Delphi
Seguinte, quero q minha aplicação quando iniciar verifique se existe o arquivo do banco de dados (teste.fdb) caso naum exista quero que ela crie um banco de dados (novo.fdb) e insira algumas tabelas, como posso fazer isso???
Estou usando Delphi 2006 + Firebird 2
Estou usando Delphi 2006 + Firebird 2
Jhosef
Curtidas 0
Respostas
Jhosef
18/09/2007
Ia esquecendo, estou usando o DBExpress para isso...
GOSTEI 0
Fabiano Góes
18/09/2007
Uma opção para criar um novo DataBase é:
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:
ai um metodo para verificar se a tabela já existe antes de cria-la:
então você pode usar assim:
Abraço !!!
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
Jhosef
18/09/2007
Primeiro isso vai servi para bancos Firebird tbem naum eh...
Outra coisa...
Se eu quiser fazer isso para outros bancos como MySQL, SQL Server, Access que são bancos que o DBExpress suporta???
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
Jhosef
18/09/2007
A função CreateTable tbem pode seu usada para criar generators, procedures e alterações na estrutura da tabela???
GOSTEI 0
Fabiano Góes
18/09/2007
Primeiro isso vai servi para bancos Firebird tbem naum eh...
o metodo [b:d220c43b95]CreateDataBase[/b:d220c43b95] cria Banco apenas Interbase/Firebird
Outra coisa...
Se eu quiser fazer isso para outros bancos como MySQL, SQL Server, Access que são bancos que o DBExpress suporta???
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();
A função CreateTable tbem pode seu usada para criar generators, procedures e alterações na estrutura da tabela???
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
Jhosef
18/09/2007
Blz deixando o createdatabase de lado entaum...
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
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
Fabiano Góes
18/09/2007
Blz deixando o createdatabase de lado entaum...
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
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
Renan.cb
18/09/2007
e para criar uma trigger?
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
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
Renan.cb
18/09/2007
existe alguma maneira de se executar um script (.sql) de dentro do delphi? tenho um script que gera o database, tabelas, triggers ...
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
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
Renan.cb
18/09/2007
sobe.
alguma dica?
alguma dica?
GOSTEI 0
Pqno_icarus
18/09/2007
tbm estou precisando urgente resolver isso, como instalar o postgres, definindo nome do db, usuário e senha em silente mode, e como rodar o script de criação das tabelas, relaçoes e tudo mais assim que instalar o applicativo... grato
GOSTEI 0