J'ai besoin de créer une base de données Firebird par programme en utilisant DBExpress. J'ai fait cela pour le serveur SQL, en me connectant d'abord à Master, puis en passant le script de Create à une requête, mais avec Firebird j'ai un petit problème de poulets et d'œufs.Création d'une base de données en utilisant DBExpress dans Delphi?
1
A
Répondre
3
J'ai reçu un bon conseil d'un collègue qui a créé du code pour le projet Freepascal. Il n'utilise pas DB express, mais selon lui c'est le seul moyen de créer une base de données avec du code. Ce code est basé sur le manuel Interbase et utilise de la dll gdslib/de fbclient un appel:
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;
L'astuce est la fonction isc_dsql_execute_immediate. J'espère que ce code vous aidera. Voici les liens vers les fichiers source freepascal où ce code provient de:
1
Exécuter un script isql
isql-i createDB.sql
CreateDB.sql le fichier inclut la commande pour créer la base de données comme indiqué ci-dessous.
SET SQL DIALECT 3;
CREATE DATABASE 'C:\DATABASE\DB.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1252;
QUIT;
Le répertoire d'installation de Firebird contient des exemples de modèles. Vérifiez le répertoire suivant sur votre ordinateur: C: \ Program Files \ Firebird \ Firebird_2_5 \ examples \ api Les prototypes de méthode peuvent être trouvés dans le répertoire: C: \ Program Files \ Firebird \ Firebird_2_5 \ include – truthseeker