2009-01-08 10 views

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:

Unit containing CreateDB function

Unit containing API call isc_dsql_execute_immediate

+0

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

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; 
Questions connexes