When using the Firebird embedded database, it's nice to be able to
create the database using only FreePascal/Lazarus.

Is there a way to do this, e.g. using the SQLScript component, using
something like this:
const
  DatabaseFile = 'DATABASE1.FDB';
var
  CreateScript: TSQLScript;
  ScriptText: TStringList;
begin
  //Connection to Firebird database
  IBConnection1.HostName := ''; //must be empty for embedded Firebird;
must be filled for client/server Firebird
  IBConnection1.DatabaseName := DatabaseFile; //Filename of Firebird
database
  IBConnection1.Username := 'SYSDBA';
  IBConnection1.Password := 'masterkey'; //default password for SYSDBA
  IBConnection1.Charset := 'UTF8'; //Send and receive string data in
UTF8 encoding
  IBConnection1.Dialect := 3; //Nobody uses 1 or 2 anymore.
  if (FileExists(DatabaseFile)=false) then
  begin
    CreateScript := TSQLScript.Create(nil);
    ScriptText:=TStringList.Create;
    try
      CreateScript.OnException:=@ExceptionHandler;
      IBConnection1.DatabaseName:='';
      CreateScript.DataBase:=IBConnection1;
      CreateScript.Transaction:=SQLTransaction1;
      IBConnection1.Open;
      SQLTransaction1.StartTransaction;

      ScriptText.Text:='CREATE DATABASE ''database1.fdb'' page_size
16384  user ''SYSDBA'' password ''masterkey'' default character set UTF8;';
      CreateScript.Script:=ScriptText;
      CreateScript.ExecuteScript;
      SQLTransaction1.Commit;

      SQLTransaction1.StartTransaction;
      ScriptText.Text:='CREATE TABLE Table1 (id VARCHAR(255), name
VARCHAR(255));';
      CreateScript.Script:=ScriptText;
      CreateScript.ExecuteScript;
      SQLTransaction1.Commit;

      IBConnection1.Close;
    finally
      ScriptText.Free;
      CreateScript.Free;
    end;
  end;
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to