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;
Questions connexes
- 1. erreur dbExpress dans Delphi 2007
- 2. Editeur de connexion DBExpress autonome (Delphi 2009)
- 3. erreur de troncature String dans Delphi DBExpress/Firebird paramatised requêtes
- 4. Liste des pilotes dbexpress gratuits pour Delphi
- 5. Delphi 2009 et Informix dbExpress avec Windows 2003
- 6. Delphi 7 Personal, MySQL en utilisant libmysql.dll + UTF8
- 7. Composant de base de données pour Firebird utilisant D2010
- 8. en utilisant SET type de données dans une base MySQL
- 9. Création d'un singleton dans Delphi en utilisant les nouvelles fonctionnalités de D2009 et D2010
- 10. Création d'une connexion avec la base de données à distance en utilisant Cocoa
- 11. Création d'une structure de base de données d'appartenance ASP.Net dans une base de données existante
- 12. Création d'une procédure stockée dans une autre base de données
- 13. Problème création d'une table de référence dans une base MySQL en utilisant php
- 14. Création d'un descendant TCustomComboBox dans Delphi
- 15. Recherche base de données en utilisant une collection d'objets entité
- 16. base de données postgresql
- 17. Connectez-vous à une base de données en utilisant log4j
- 18. Insertion par lots de données dans la base de données MySQL en utilisant php
- 19. Problème Insertion de données dans la base de données MS Access en utilisant ADO via Python
- 20. Comment sauvegarder une base de données SQL en utilisant PHP?
- 21. Création d'une base de données pour un formulaire Web général
- 22. en utilisant dataadpter comment mettre à jour les données dans la base de données
- 23. Création d'une base de données dans SQL Server à l'aide du modèle de données Visio
- 24. Création d'une migration de données à partir de données déjà dans une base de données de test
- 25. Création de classes de base de base
- 26. Création d'une base de données de bibliothèque musicale facilement modifiable
- 27. Création de données d'exemple dans l'outil de base de données @ sqlserver
- 28. Obtention d'une liste de champs à partir d'un DBExpress TSQLQuery
- 29. Création d'une base de données pour l'appariement des contraintes
- 30. Création d'une base de données pour un système de classification
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