Bonsoir,
Je voudrais savoir s'il est possible de créer une base Firebird dynamiquement sous Lazarus. J'ai installé le composant ZEOSDB, mais je ne trouve pas cette fonction.
Je sais le faire sous Delphi, mais pas sous Lazarus.
Merci de votre aide.
Version imprimable
Bonsoir,
Je voudrais savoir s'il est possible de créer une base Firebird dynamiquement sous Lazarus. J'ai installé le composant ZEOSDB, mais je ne trouve pas cette fonction.
Je sais le faire sous Delphi, mais pas sous Lazarus.
Merci de votre aide.
Bonjour,
Je ne suis pas certain que cela soit faisable avec les composants Zeos, par contre le composant TIBConnection fournit avec Lazarus (onglet SQLdb de la palette) sait le faire (C'est un peu similaire à ce qui se fait avec Delphi et Interbase...)
Voila un extrait de code à adapter :) :--Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 var IBCnx: TIBConnection; //... IBCnx.HostName := 'localhost'; IBCnx.DatabaseName := 'C:\Developpement\Databases\Fb2\LazTest.fdb'; IBCnx.UserName := 'SYSDBA'; IBCnx.Password := 'masterkey'; IBCnx.CharSet := 'ISO8859_1'; IBCnx.Dialect := 3; IBCnx.Params.Clear; IBCnx.Params.Add('PAGE_SIZE 4096'); IBCnx.CreateDB;
Philippe
je ne vais faire que citer un Post sur le forum Zeos
http://zeos.firmos.at/viewtopic.php?p=14900#14900
Bonjour,
Les composants UIB, spécifiquement pour Firebird, permettent de créer une base en dynamique. C'est une suite freeware / opensource de 12 composants permettant de développer avec Firebird
Ce sont ces compos que j'utilise pour Firebird, en même temps que les compos ZEOS pour accéder à une base Oracle.
Le composant à utiliser pour créer une base en dynamique est TUIBDatabase avec TUIBDatabase.CreateDatabase
Le code serait du style :
Sachant que le compo TUIBDatabase a déjà toutes les propriétés visuelles, il ne reste alors dans le code réellement qu'à écrire le CreateDatabase.Code:
1
2
3
4 TUIBDatabase.CharacterSet := csUTF8; TUIBDatabase.DatabaseName := 'MyDatabase.fdb'; TUIBDatabase.LibraryName := 'fbclient.dll'; TUIBDatabase.CreateDatabase(csUTF8,4096);
J'ai tellement été aidé sur ce forum, j'espère qu'à mon tour j'ai pu aider :ccool:
Laurent
Merci de votre aide!
J'ai trouvé des composants només IBX qui fonctionnent exactement comme les composants interbases de delphi, donc c'est super car je ne me sent pas perdu!
Bonjour,
Avec Delphi, j'avais utilisé les composants IBX avec une base Firebird. Mais je suis vite passé aux compos spécialisés UIB car avec les IBX il y avait des problèmes : plantage sur des transactions, fuites mémoires ... Mais peut-être que depuis ils ont évolué dans le "bon sens".
L'utilisation des composants UIB se fait de la même façon que les compos IBX.
Exemple avec les compos IBX
Exemple avec les compos UIBCode:SQL.fieldbyname('mon_champ').asstring;
Les composants UIB sont spécifiquement adaptés à Firebird (développés uniquement pour ce SGBD).Code:SQL.fields.bynameasstring['mon-champ']
Voili voilà .... ma petite contribution ;)
Bonne journée
Bonjour,
Les composants IBX ont toujours ciblé exclusivement Interbase. Le fait qu'ils soient "compatibles" avec Firebird vient du fait que Firebird est initialement un "fork" d'Interbase 6. Plus le temps passe, et plus ces 2 moteurs divergent et de facto moins la compatibilité sera certaine. Elle n'est en tous cas absolument pas garantie par Embarcadero.
Pas tout à fait, UIB privilégie la performance et de fait certains composants ne fonctionne pas comme ceux d'IBX, en particulier les dataset : TUIBQuery n'est pas orienté données (pas de lien à un TDataSource), seul TUIBDataSet l'est. TUIBDataSet est également en lecture seule...
:nono:
Eh non ! ce jeu de composants cible indifféremment Firebird ou Interbase. C'est écrit en toutes lettres sur leur site
--
Philippe.
Bonjour,
Pour les compos IBX, je répondais à jojo86 qui, initialement, voulait gérer une base Firebird et indiquait qu'il était parti avec les compos IBX dans sa réponse du 03/05 à 21h29. En réponse, j'indiquais donc les déboires que j'avais eu il y a quelques années à utiliser les compos IBX avec une base Firebird.
Dans le code que j'ai indiqué, je faisais juste référence à TUIBQUERY dont la syntaxe diffère un peu. Je n'utilise pas, sûrement à tort d'ailleurs, les DATASET et DATASOURCE. J'utilise uniquement les QUERY pour accéder aux données. Mais, je le redis, peut-être et sûrement à tort, je le reconnais.
Dans les différents news / forums que je lis, il était surtout question de UIB pour Firebird et IBX pour Interbase. Ou alors, je n'ai rien compris ...
Bon ben, sur ce, je retourne à ma programmation car visiblement mais réponses ne sont pas .... exactes.
Merci pour les précisions.
@+
Bonjour,
Si je peux moi aussi apporter mes petites précisions...;)
J'ai utilisé les IBX avec D7 de 2002 et la version presque identique (pas de TIBScript) de ces IBX pour Lazarus publiée par http://www.mwasoftware.co.uk avec des bases Firebird.
Si la version D7 ne semble connaitre que la bibliothèque gds32.dll d'Interbase (avec Firebird sous Windows il suffit de renommer fbembed.dll en gds32.dll si on utilise la version embedded, ou en installant la version serveur, cocher l'installation de la bibliothèque client pour Interbase qui copie gds32.dll dans system32), sous Windows la version Lazarus cherche en premier les bibliothèques sous leurs différents noms Firebird et s'adapte sous Linux
Pour le reste elle n'a évolué ni avec Interbase ni Firebird. Par exemple, elle ne connait pas les lignes de commentaires commençant par "--" ni les "execute block".
Concernant les UIB, ils semblent bien suivre les évolutions d'Interbase et Firebird dans les environnements Delphi et Lazarus (je n'ai testé que pour Firebird avec Lazarus). Henri Gourvest a je pense de bonnes raisons dans certains cas, de ne pas préconiser l'emploi des datasets (transactions longues). Mais si son UIBDataset est limité en lecture seule, il existe un FBDataset (svn://svn.shamangrad.net/FBDataSet/trunk) compatible avec les UIB et permettant l'écriture au cas où...
Il existe aussi les Zeos (cités par SergioMaster) qui "vivent" encore. Ils ont l'avantage d'utiliser une syntaxe plus proche des IBX et d'être compatibles avec d'autres SGBDR. Mais, peut-être l'inconvénient de cette compatibilité, je les ai trouvés beaucoup plus lents.
André
Bonjour,
J'utilise les compos UIB pour FIREBIRD et les compos ZEOS pour ORACLE. J'utilise la version 6.6.6 des compos ZEOS mais dans le protocole, on ne peut aller que jusqu'à la version 2.1 de FIREBIRD. D'où le fait que j'utilise les compos UIB en plus.
J'ai aussi remarqué que les compos standards de Lazarus d'accès aux bases de données ne fonctionnaient pas dans des services Windows. Je ne me rappelle plus exactement quel était le message mais en tout cas la compilation ne passait pas. De ce que j'ai compris, il utilisent un handle sur une form alors qu'avec un service windows, il n'y en a pas. Les compos ZEOS permettent alors de contourner le problème.
Autre soucis rencontré avec les compos standards de Lazarus : les ressources mémoires.
Mais peut-être n'ai je pas utilisé correctement ces compos.
Pour en revenir aux compos UIB, Henri GOURVEST suit effectivement les avancées de Firebird / Interbase, et aussi les versions de Delphi et réalise toutes les adaptations.
Pour ma part, j'utilise donc les versions 6.6.6 de ZEOS et 2.5.1 de UIB. Pour l'utilisation que j'en ai, ça me suffit : c'est stable, simple à utiliser, ça n'utilise pas de ressources mémoire inutile, ... Lors de la première connexion à une base, les compos ZEOS sont effectivement un peu long mais après c'est assez rapide.
Maintenant, il est vrai que je ne développe que des petits utilitaires pour des besoins spécifiques en complément d'un logiciel de gestion d'entrepôt. Donc je ne connais pas de manière approfondie toutes les possibilités de ces composants n'ayant pas eu à les pousser à fond ;)
Je m'arrête car je sens que je dérive à grand pas vers le HS par rapport à la demande initiale de jojo86. ;)
@+
Laurent
Merci de ta participation !
Bon développement à tous !