Chapitre V: Le Sql intégré : un paquetage
de Sql Embarqué
V.1. Introduction
Cet aparté étant terminé, revenons
à présent sur le SQL intégré. Rappelons que SQL
intégré permet d'utiliser SQL dans un langage de troisième
génération (C, Java, Cobol, etc.) avec un(e) :
déclaration d'objets ou d'instructions ;
exécution d'instructions ;
gestion des variables et des curseurs ; traitement
des erreurs.
Bien qu'essentielle, les sections de ce chapitre décrit
le pacquage SQL embarqué pour PostgreSQL ECPG. Il est compatible avec
les langages C et C++ et a été développé par Linus
Tolke et Michael Meskes.
En approfondissant cette idée, un programme SQL
embarqué est en fait un programme ordinaire, dans notre cas un programme
en langage C, dans lequel nous insérons des commandes SQL incluses dans
des sections spécialement marquées. La description des
instructions Embedded SQL commencent par les mots EXEC SQL et se terminent par
un point-virgule (« ; »). Pour générer
l'exécutable, le code source est d'abord traduit par le
préprocesseur SQL qui convertit les sections SQL en code source C ou
C++, après quoi il peut être compilé de manière
classique.
Nous pouvons noter que le SQL embarqué présente
des avantages par rapport à d'autres méthodes pour prendre en
compte des commandes SQL dans du code C. comme par exemple, le passage des
informations de et vers les variables du programme C est entièrement
pris en charge. Ensuite, le code SQL du programme est vérifié
syntaxiquement au moment de la précompilation. Enfin, le SQL
embarqué en C est spécifié dans le standard SQL et
supporté par de nombreux systèmes de bases de données SQL.
L'implémentation PostgreSQL est conçue pour correspondre à
ce standard autant que possible, afin de rendre le code facilement portable
vers des SGBD autre que PostgreSQL.
Comme situation alternative au SQL intégré, on
peut citer l'utilisation d'une API (Application Programming Interface)
permettant au programme de communiquer directement avec le SGBD via des
fonctions fournies par l'API. Dans ce cas de figure, il n'y a pas de
précompilation à effectuer [32].
86
V.2. Connexion au serveur de bases de
données
Il en est de même pour le langage utilisé (C, Java,
PHP, etc.), pour pouvoir effectuer un traitement sur une base de
données, il faut respecter les étapes suivantes :
1. établir une connexion avec la base de
données ;
2. récupérer les informations
relatives à la connexion ;
3. effectuer les traitements désirés
(requêtes ou autres commandes SQL) ;
4. fermer la connexion avec la base de
données.
Mais ce qui va nous intéresser tout
particulièrement ici, c'est comment ouvrir et fermer une connexion, et
nous verrons dans les sections suivantes comment effectuer des traitements.
A. Ouverture de connexion
La connexion à une base de données se fait en
utilisant l'instruction suivante :
La cible peut être spécifiée de l'une des
façons suivantes :
- nom_base[@nom_hôte ][:port] ;
- tcp:postgresql://nom_hôte [:port ] [/nom_base][? options]
;
- unix:postgresql://nom_hôte[: port][/nom_base ][? options]
;
- une chaîne SQL littérale contenant une des formes
ci-dessus ;
- une référence à une variable contenant une
des formes ci-dessus ;
- DEFAULT.
D'une manière réelle, utiliser une chaîne
littérale (entre guillemets simples) ou une variable
de référence génère moins d'erreurs.
La cible de connexion DEFAULT initie une connexion
sur la base de données par défaut avec
l'utilisateur par défaut. Aucun nom d'utilisateur ou
nom de connexion ne pourrait être spécifié
isolément dans ce cas.
Il existe également différentes façons de
préciser l'utilisateur utilisateur :
- nom_utilisateur
- nom_utilisateur/ mot_de_passe
- nom_utilisateur IDENTIFIED BY mot_de_passe
- nom_utilisateur USING mot_de_passe
nom_utilisateur et mot_de_passe peuvent être un
identificateur SQL, une chaîne SQL
littérale ou une référence à une
variable de type caractère.
nom_connexion est utilisé pour gérer plusieurs
connexions dans un même programme.
Il peut être omis si un programme n'utilise qu'une seule
connexion. La dernière connexion
87
ouverte devient la connexion courante, utilisée par
défaut lorsqu'une instruction SQL est à exécuter.
|