31.2. Se connecter au serveur de bases de données
La connexion à une base de données se fait à l'aide de l'instruction
suivante :
EXEC SQL CONNECT TO cible [AS nom-connexion] [USER nom-utilisateur];
La
cible
peut être indiquée
d'une des façons suivantes :
-
nom_base
[@
nomhôte
][:
port
]
-
tcp:postgresql://
nomhôte
[:
port
]
[/
nom_base
][?
options
]
-
unix:postgresql://
nomhôte
[:
port
][/
nom_base
][?
options
]
- une chaîne SQL contenant une des formes précédentes
- une référence à une variable contenant une des formes
précédentes (voir les exemples)
-
DEFAULT
Si la cible de connexion est indiquée littéralement (c'est-à-dire non
pas via une variable de référence) et la valeur n'est pas mise entre
guillemets, les règles d'insensibilité à la casse du SQL standard
sont appliquées. Dans ce cas, il est possible, si cela s'avérait
nécessaire, d'encadrer séparément les paramètres individuels de
guillemets doubles. En pratique, l'utilisation d'une chaîne littérale
(entre guillemets simples) ou d'une variable de référence engendre
moins d'erreurs. La cible de connexion DEFAULT initie une connexion à la base de données
standard avec l'utilisateur standard. Aucun nom d'utilisateur ou de
connexion ne peut être indiqué isolément dans ce cas.
Il existe également différentes façons de préciser le nom de
l'utilisateur :
-
nomutilisateur
-
nomutilisateur
/
motdepasse
-
nomutilisateur
IDENTIFIED BY
motdepasse
-
nomutilisateur
USING
motdepasse
Comme indiqué ci-dessus, les paramètres
nomutilisateur
et
motdepasse
peuvent être un identificateur
SQL, une chaîne SQL 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 le programme n'utilise qu'une seule connexion. La connexion la
plus récemment ouverte devient la connexion courante, utilisée par
défaut lorsqu'une instruction SQL est à exécuter (voir plus loin dans
ce chapitre).
Voici quelques exemples d'instructions
CONNECT
:
EXEC SQL CONNECT TO ma_base@sql.mondomaine.com;
EXEC SQL CONNECT TO unix:postgresql://sql.mondomaine.com/ma_base AS maconnexion USER john;
EXEC SQL BEGIN DECLARE SECTION;
const char *cible = "ma_base@sql.mondomaine.com";
const char *utilisateur = "john";
EXEC SQL END DECLARE SECTION;
...
EXEC SQL CONNECT TO :cible USER :utilisateur;
La dernière forme utilise la variante de référence de variable
caractère, citée plus haut. L'utilisation de variables C dans les
instructions SQL, en les préfixant d'un caractère deux-points, est
expliqué dans les prochaines sections.
Le format de la cible de connexion n'est pas spécifié dans le
standard SQL. Ainsi, lorsque l'on souhaite développer des
applications portables, il est préférable d'utiliser une syntaxe
fondée sur le dernier exemple ci-dessus pour encapsuler la chaîne de
la cible de connexion.