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 :
Si la cible de connexion est indiquée littéralement (c'est-à-dire non pas via une variable de référence) et que 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ère 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 :
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).
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.