your usar tutorial password not gsec flamerobin fdb error como are and delphi firebird dbexpress

delphi - usar - gsec firebird



Crear una base de datos usando DBExpress en Delphi? (2)

Ejecuta un script isql

isql-i createDB.sql

CreateDB.sql el archivo incluye el comando para crear la base de datos como se muestra a continuación.

SET SQL DIALECT 3; CREATE DATABASE ''C:/DATABASE/DB.FDB'' USER ''SYSDBA'' PASSWORD ''masterkey'' PAGE_SIZE 4096 DEFAULT CHARACTER SET WIN1252; QUIT;

Necesito crear una base de datos Firebird programáticamente usando DBExpress. He hecho esto para el servidor SQL, primero conectándome a la Maestra, y luego paso la secuencia de comandos de Crear a una consulta, pero con Firebird tengo un pequeño problema de huevo y pollo.


Recibí un buen consejo de un colega que creó un código para el proyecto Freepascal. No utiliza DB express, pero según él, es la única forma de crear una base de datos con código. Este código se basa en el manual de InterBase y utiliza una llamada del dll gdslib / fbclient:

procedure TIBConnection.CreateDB; var ASQLDatabaseHandle, ASQLTransactionHandle : pointer; CreateSQL : String; pagesize : String; begin CheckDisConnected; {$IfDef LinkDynamically} InitialiseIBase60; {$EndIf} ASQLDatabaseHandle := nil; ASQLTransactionHandle := nil; CreateSQL := ''CREATE DATABASE ''; if HostName <> '''' then CreateSQL := CreateSQL + ''''''''+ HostName+'':''+DatabaseName + '''''''' else CreateSQL := CreateSQL + '''''''' + DatabaseName + ''''''''; if UserName <> '''' then CreateSQL := CreateSQL + '' USER '''''' + Username + ''''''''; if Password <> '''' then CreateSQL := CreateSQL + '' PASSWORD '''''' + Password + ''''''''; pagesize := params.Values[''PAGE_SIZE'']; if pagesize <> '''' then CreateSQL := CreateSQL + '' PAGE_SIZE ''+pagesize; if isc_dsql_execute_immediate(@FStatus[0],@ASQLDatabaseHandle,@ASQLTransactionHandle,length(CreateSQL),@CreateSQL[1],Dialect,nil) <> 0 then CheckError(''CreateDB'', FStatus); if isc_detach_database(@FStatus[0], @ASQLDatabaseHandle) <> 0 then CheckError(''CreateDB'', FStatus); {$IfDef LinkDynamically} ReleaseIBase60; {$EndIf} end;

El truco es la función isc_dsql_execute_immediate. Espero que este código te ayude. Aquí están los enlaces a los archivos fuente Freepascal de los que proviene este código:

Unidad que contiene la función CreateDB

Unidad que contiene la llamada API isc_dsql_execute_immediate