IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)


Création et connexion et d'une base MySQL à l'aide de DBExpress

Partie 2/2

Dans le premier article, j'ai expliqué comment établir une connexion sur une base MySQL à l'aide de DBExpress. Malheureusement si la connexion est simple le résultat est unidirectionnel. Ce n'est pas une fatalité, voici déjà deux façons d'obtenir un résultat plus conventionnel.

Utilisation du composant TSQLClientDataSet

Il est sur la palette DBExpress, très simple à l'utilisation, il faut juste référencer le TSQLConnection dans la propriété DBConnection. La commande SQL est a inscrire dans la propriété CommandText. C'est tout !

Les tests sur ma petite base MySQL semble montrer que cela fonctionne. Finalement, c'est simple et efficace c'est la méthode la plus directe pour obtenir un ensemble de données qui soit "navigable" . Les test avec un TDBNavigator ou TDBGrid s'avèrent très satisfaisants. Il faut noter que l'aide indique que les relations maîtres/détails ne sont pas très conseillées.

 

Utilisation du composant TDataSetProvider

Sur la Palette DataAccess, notre bon vieux TDataSource est toujours là, mais il est maintenant accompagné d'un TDataSetProvider et d'un TClientDataSet. Ces deux composants permettent apparemment d'utiliser diverses sources de données, pas seulement des bases de données mais aussi une source XML ou des Dataset de la palette ADO ou encore Interbase, et d'effectuer la liaison avec un TDataSource. Il est donc possible de visualiser différentes source de données comme une base et de les manipuler de la même façon, Insert, Delete etc.. Dans le cas d'un résultat de requête unidirectionnel il est est possible d'utiliser ces composants pour contourner cet état. L'utilisation et la maîtrise de cet aspect est plus complexe, le DataSet Provider se charge d'établir la liaison et de maintenir une "bulle" de données dans un "cache".

Cette vue montre le fonctionnement de la liaison à ma table MySQL. En partant du haut le premier composant SQLConnection établit la liaison avec le serveur MySQL. SQLQuery par le biais d'une requête, me retourne un ensemble données unidirectionnel, non navigable donc. C'est là qu'intervient le DataSetProvider qui récupère l'ensemble de donnée fournit par le SQLQuery et le met en cache. Dans cette utilisation, le composant ClientDataSet1 ne permet pas l'utilisation de sa propriété CommandText, car il reprends la commande SQL du SQLQUery mais se fournit en données auprès du DataSetProviser. Cet ensemble de données navigable et modifiable, est distribué par le DataSource traditionnel que nous connaissons tous. Une remarque il s'agit donc d'un ensemble de données mis cache par le DataSetProvider, cette particularité autorise une grande souplesse d'utilisation. Les modifications auront besoin d'être validé, pour être reportées dans la base de données, ce tampon permet de simuler une transaction, pour une base de données qui ne possèderait pas cette fonctionnalité. De plus le ClientDataSet possède une propriété PacketsRecords qui permet de spécifié le volume de données qui doit être manipulé à chaque fois. Encore une fois cette fois façon de procéder reste compatible Kylix, c'est vraiment le coté primordial de DBExpress.

 

Conclusion

DBExpress est puissant , mais il est plus complexe qu’un acces direct à l'aide de composant spécifiques ou à travers le BDE, mais sa souplesse, et son portabilité vers Kylix mérite les petits efforts d'accoutumance qu'il demande. Delphi 6 est confortable et rapide, plus on s'en sert et moins il est possible de s'en séparer, dans mon cas j'ai eu toutes les peines du monde à rédiger ce papier, à la place j'ai fait ça, un début de projet pour administrer mes tables MySQL, Normalement ,bien que je n'ai pas encore testé, cela devrait être portable vers Kylix sans problème. Quel environnement de programmation peut me permettre un accès direct a MySQL et une portabilité Windows / Linux ? Quand je pense qu’au début j'ai utilisé Delphi par hasard, cette fois là, je peux dire que j'ai eu de la chance :-))

 

 



Avril 2001 - Jean Marc Carayon